2013-10-10 101 views
1

我知道這可能是基於意見的,但它可以解答後續問題:爲什麼JComboBox和ComboBoxModel類沒有List或Collection構造函數?

Vector有一個用於任何集合的構造函數,那麼爲什麼JComboBox和相關類只使用Vector?繼承DefaultComboBoxModel以利用更廣泛的初始化類型可以嗎?

private class MyComboBoxModel<E> extends DefaultComboBoxModel<E> { 
    private MyComboBoxModel (Collection<E> input) { 
     super(new Vector<E>(input)); 
    } 
} 

或者我應該只使用DefaultComboBoxModel並在調用構造函數之前創建一個向量?

Vector<Contact> vectorList = new Vector<Contact>(getList()); 
DefaultComboBoxModel<Contact> myModel = new DefaultComboBoxModel<Contact>(vectorList); 
+2

集合要比搖擺:-) – kleopatra

+0

年輕的他們爲什麼不改變構造函數接受更廣泛的投入? – Ron

+1

_you_必須修復大量破損的代碼後再詢問一次。 – trashgod

回答

2

看起來集合的功能將在未來添加。從ListModel的,ComboBoxModel中的超接口:

此類以鬆散方式實現java.util.Vector API,因爲它 實現java.util.Vector中的1.1.x版本的,有沒有收藏 類支持,發生更改時通知ListDataListeners。 目前它委託給Vector,在未來的版本中它將是一個真實的Collection實現。

http://docs.oracle.com/javase/7/docs/api/javax/swing/DefaultListModel.html

+2

好吧,這是他們的待辦事項列表自年齡:-) – kleopatra

相關問題