2011-05-19 77 views
1

我想要將JScrollPane中的JList綁定到數組,只要數組更改List更改。將Swing JList綁定到數組中

+0

@Ahmed,當你點擊「插入」時,你想要你的隊列(JScrollPane中的JList)?添加一個項目並且JTextField會更新以顯示隊列的大小? – mre 2011-05-19 04:30:30

+0

不,當我按下插入時,我會在窗格中顯示隊列的內容。 文本字段是另一個輸入 – Ahmed 2011-05-19 04:37:29

+0

@Ahmed,隊列的「內容」是什麼以及它們的來源在哪裏?我想我至少在形象上還是有點困惑。在這一切中,文本場究竟扮演什麼角色? – mre 2011-05-19 04:43:56

回答

1

第一個想法,當然會通過使用JList的建設者之一,並希望JList組件與陣列同步更新:

public JList(Object[] listData); 
public JList(Vector<?> listData); 

很顯然,這是行不通的。只是,如果使用第三個非默認構造函數

public JList(ListModel model); 

,並使用默認實現DefaultListModel並通過例如直接更新其元素

DefaultListModel model = new DefaultListModel(); 
... 
model.setElementAt(value, 25); 

您會收到一個動態更新的JList組件,通過更新DefaultListModel

Java SE提供的是由java.util.Arrays.asList(T... a)方法提供的「固定大小列表備份指定數組」,比較Java SE API

但是,這裏支持Java SE休息。沒有ListModel實現「由列表備份」。

我試圖克服這種雙向的:

  1. 實現List接口在類同步更新一個 底層DefaultListModel
  2. 延長DefaultListModel,同步更新底層List實例。

都不行。

因此,我冒昧地說,Java SE不支持此功能,但尚未。您必須編寫自己的JList實現,並將其同步到List實例,或者等到出現新的Java分發版本時,才能使用JList'sDefaultListModel's備份List實例的功能。