我在我的java bean中有一個字符串ArrayList。我希望能夠在設計時在屬性編輯器中添加/刪除此列表。我如何實現這一點?我在5年後回到Java,所以我有點愚蠢。我已經設法讓所有我的簡單類型屬性在編輯器中可編輯,但是當您在屬性編輯器中單擊「...」時,該屬性表示該類型不支持自定義編輯。 所以... 任何人都能指出我在正確的方向嗎?Java Bean ArrayList
謝謝!
我在我的java bean中有一個字符串ArrayList。我希望能夠在設計時在屬性編輯器中添加/刪除此列表。我如何實現這一點?我在5年後回到Java,所以我有點愚蠢。我已經設法讓所有我的簡單類型屬性在編輯器中可編輯,但是當您在屬性編輯器中單擊「...」時,該屬性表示該類型不支持自定義編輯。 所以... 任何人都能指出我在正確的方向嗎?Java Bean ArrayList
謝謝!
林不知道你的意思是屬性編輯器。你在談論一個IDE嗎?
無論如何,如果您的列表是私人的,您有2個選項允許訪問它。
1)返回列表的引用,然後調用者可以對其進行操作。
2)創建一個方法add/removeListElement,並傳入要添加或刪除的字符串。
我更喜歡選項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
}
對不起,該項目需要我使用Netbeans,所以我是。我需要GUI設計器的屬性編輯器來允許客戶端在GUI設計器中添加/刪除成員到這個數組列表中,而無需任何編碼。 – Kamiikoneko 2010-11-18 19:44:39
我正在創建一個可重用的用戶控件,如果它有幫助 – Kamiikoneko 2010-11-18 19:47:04
嗯......你是指這個?
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)。
這個解決方案沒有做我需要做的事情。我需要做到這一點,因此可以在設計器中添加和刪除此數組列表中的項目。比如當你點擊一個「...」按鈕並且可以指定值時,我需要知道這是如何爲Arraylist完成的。 – Kamiikoneko 2010-11-18 23:18:54
不幸的是Java Beans Spec沒有提及任何類型的集合,但它支持數組作爲「索引屬性」。
的模式是:
Type[] getFoo();
void setFoo(Type[] value);
Type getFoo(int index);
void setFoo(int index, Type[] value);
就像JList和JTree的熱門成分繞過這個限制通過實施模型(這在技術上是隻是一個屬性)和一個自定義組件編輯器,可視化編輯模型。
自定義編輯器有一個java trail,詳細解釋了這一點。 我不確定是否可以爲類型爲ArrayList<T>
的get/set屬性創建編輯器,但可能這也是可能的。
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
}
請定義「在屬性編輯器」。 – DwB 2010-11-18 19:32:53
GUI Designer中的屬性編輯器抱歉。 (NetBeans的)。我需要將其設爲可重複使用的控件,而arraylist是使用我的控件的人員可以在設計時定義的受限值列表。 – Kamiikoneko 2010-11-18 19:48:37