2010-11-18 50 views
1

我在我的java bean中有一個字符串ArrayList。我希望能夠在設計時在屬性編輯器中添加/刪除此列表。我如何實現這一點?我在5年後回到Java,所以我有點愚蠢。我已經設法讓所有我的簡單類型屬性在編輯器中可編輯,但是當您在屬性編輯器中單擊「...」時,該屬性表示該類型不支持自定義編輯。 所以... 任何人都能指出我在正確的方向嗎?Java Bean ArrayList

謝謝!

+0

請定義「在屬性編輯器」。 – DwB 2010-11-18 19:32:53

+0

GUI Designer中的屬性編輯器抱歉。 (NetBeans的)。我需要將其設爲可重複使用的控件,而arraylist是使用我的控件的人員可以在設計時定義的受限值列表。 – Kamiikoneko 2010-11-18 19:48:37

回答

-1

林不知道你的意思是屬性編輯器。你在談論一個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 
} 
+0

對不起,該項目需要我使用Netbeans,所以我是。我需要GUI設計器的屬性編輯器來允許客戶端在GUI設計器中添加/刪除成員到這個數組列表中,而無需任何編碼。 – Kamiikoneko 2010-11-18 19:44:39

+0

我正在創建一個可重用的用戶控件,如果它有幫助 – Kamiikoneko 2010-11-18 19:47:04

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完成的。 – Kamiikoneko 2010-11-18 23:18:54

0

不幸的是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屬性創建編輯器,但可能這也是可能的。

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 
}