2010-11-18 11 views
1

私はJava BeanにStringのArrayListを持っています。私は、プロパティエディタでデザイン時にこのリストに追加/削除できるようにしたい。これをどのように実装すればよいですか?私は5年後にJavaに戻ってくるので、私はちょっとばかだ。私はすべての簡単な型プロパティをエディタで編集可能にすることができましたが、このプロパティは、プロパティエディタで "..."をクリックすると、その型のカスタム編集はサポートされていません。 だから... 誰かが正しい方向に私を指すことができる?Java Bean ArrayList

ありがとうございました!

+0

「プロパティエディタ」で定義してください。 – DwB

+0

GUIデザイナのプロパティエディタはごめんなさい。 (NetBeans)。私はこれを再利用可能なコントロールにする必要があり、arraylistは、自分のコントロールを使用する人が設計時に定義できる制限値のリストです。 – Kamiikoneko

答えて

-1

あなたはプロパティエディタの意味をよく分かりません。あなたはIDEについて話していますか?

あなたのリストがプライベートである場合は、そのリストにアクセスするための2つのオプションがあります。

1)呼び出し元が操作できるリストへの参照を返します。
2)add/removeListElementメソッドを作成し、追加または削除するStringを渡します。

私は、リストのより良いカプセル化/データ隠蔽を提供するので、オプション2がより好きです。擬似ですが、あなたのアイデアを取得するには、次のような

何か、....

class TheBean { 
    private List strings = .... 

    getStrings(){ 
     return Collections.unmodifiableList(this.strings) // so if you return the reference people cant muck with it. 
    } 

    addListElement(String toAdd) { 
     // possibly validate toAdd 
     this.strings.add(toAdd); 
    } 
    // you also need removeListelement 
} 
+0

はい、申し訳ありませんが、プロジェクトではNetbeansを使用する必要があります。 GUIデザイナーのためのプロパティーエディターが必要です。これにより、クライアントはGUIデザイナーのメンバーリストにメンバーを追加/削除することができます。 – Kamiikoneko

+0

役立つなら再利用可能なユーザーコントロールを作成しています – Kamiikoneko

1

うーん...あなたはこのことを意味しますか?

import java.util.List; 

public MyBean { 

private List<String> stringList; 

public void add(String str) { 
    stringList.add(str); 
} 

public String get(int i) { 
    return stringList.get(i); 
} 

public String[] getElements() { 
    String[] elements; 
    stringList.toArray(elements);   
    return elements; 
} 

// ... Your bean struct here 

} 

またはthis (JList)が必要です。

+0

この解決策は私がしなければならないことをしません。私はそれを作る必要があるので、デザイナーのこのarraylistにアイテムを追加したり削除したりすることができます。 "..."ボタンをクリックして値を指定できるように、私はこれがArraylistのためにどのように行われるのかを知る必要があります。 – Kamiikoneko

0

残念ながら、Java Beans Specにはどのような種類のコレクションも記載されていませんが、配列は「インデックス付きプロパティ」としてサポートされています。

パターンは次のとおりです。JListのとJTreeのような

Type[] getFoo(); 
void setFoo(Type[] value); 
Type getFoo(int index); 
void setFoo(int index, Type[] value); 

人気のコンポーネントは(技術的にはちょうど性質である)モデルと視覚的にモデルを編集するためのカスタムコンポーネントエディタを実装することでこの制限を回避します。

これを詳細に説明するカスタムエディタ用のjava trailがあります。 タイプArrayList<T>のget/setプロパティ用のエディタを作成することが可能かどうかは不明ですが、おそらくそれも可能です。

0
class TheBean { 
    private List strings = .... 

getStrings(){ 
    return Collections.unmodifiableList(this.strings) // so if you return the reference people cant muck with it. 
} 

addListElement(String toAdd) { 
    // possibly validate toAdd 
    this.strings.add(toAdd); 
} 
// you also need removeListelement 
}