名前付きプロパティーという種類のユーザー・プロパティーも、グラフィック・オブジェクトに設定できます。名前付きプロパティーは、クラス IlvNamedProperty のインスタンスです。このクラスは抽象クラスで、必要に応じてサブクラス化する必要があります。名前付きプロパティーとユーザー・プロパティーの主な相違点は、このタイプのプロパティーには名前が付いており、グラフィック・オブジェクトを保存すると、
.ivl
ファイルにあるグラフィック・オブジェクトと一緒に保存できるという点です。名前付きプロパティーは、マネージャー、または「レイヤー」で説明されているレイヤー・オブジェクトにも保存できます。名前付きプロパティーをグラフィック・オブジェクトに保存するには、次を使用します。
void setNamedProperty(IlvNamedProperty)
名前付きプロパティーを取得するには、次を使用します。
void getNamedProperty(String name)
次の例は、名前付きプロパティーを示しています。
import ilog.views.*; import ilog.views.io.*; public class MyNamedProperty extends IlvNamedProperty { String value; public MyNamedProperty(IlvInputStream stream) throws IlvReadFileException { super(stream); this.value = stream.readString("value"); } public MyNamedProperty(String name, String value) { super(name); this.value = value; } public MyNamedProperty(MyNamedProperty source) { super(source); this.value = source.value; } public IlvNamedProperty copy() { return new MyNamedProperty(this); } public boolean isPersistent() { return true; } public void write(IlvOutputStream stream) throws IOException { super.write(stream); stream.write("value", value); } }
名前付きプロパティーは、タイプ
String
のメンバー変数値を定義し、プロパティーの値を保存します。次のメソッドを作成して、
.ivl
ファイルにプロパティーを保存できるようにします。- 名前付きプロパティーの
isPersistent
メソッドは、true
を返します。 write
メソッドは、.ivl
ファイルにオブジェクトを保存する際に使用します。このメソッドをオーバーライドすると、メンバー変数value
にストリングを保存できます。プロパティーを正しく保存するには、super.write
を呼び出す必要があります。- このクラスは、
IlvInputStream
パラメーターでパブリック・コンストラクターを定義します。このコンストラクターを使用して、.ivl
ファイルからプロパティーを再度読み込みます。メモパッケージの名前を含めたクラスの完全な名前が、.ivl
ファイルに保存されます。したがって、クラスの名前を変更すると、プロパティーは読み込めません。また、クラスはパブリック・クラスで、.ivl
ファイルに保存できる必要があります。そうでない場合は、.ivl
ファイル・リーダーはクラスをインスタンス生成できません。