2010-01-22 35 views
0

我有一個擺動GUI上的兩個JList。現在我希望當用戶點擊一個按鈕(比如TransferButton)時,從一個JList中選擇的元素從第一個JList添加到第二個JList,並從第一個JList中移除這些選定的元素。如何將元素從一個JList傳輸到Java中的其他JList?

+1

我假設你看着javadoc並在提問之前試過一兩件事? – Bozho 2010-01-22 15:11:50

回答

3

該模型不知道選擇。

JList提供了幾種獲取選定項目或選定索引的方法。使用這些方法獲取項目並將其添加到其他列表的模型中。

2

你有兩個JList s,那麼你也有他們各自的ListModel s。根據你如何實現它們,你可以從一個模型中刪除元素並將它們添加到另一個模型中。但請注意,ListModel界面默認情況下並不關心元素訪問,因此您可能必須自行實施addremove方法。

+0

目前,JList的列表模型都是DefaultListModel,但如果需要,我可以更改它。 DefaultListModel不提供任何方法,如getSelectedItem或getSelectedItems ... – 2010-01-22 15:21:19

+0

對,你必須在這種情況下實現自己的模型。或者從DefaultListModel派生並適當地擴展它。 – Joey 2010-01-22 15:36:16

1
DefaultListModel leftModel = new DefaultListModel(); 
leftModel.addElement("Element 1"); 
leftModel.addElement("Element 2"); 
leftModel.addElement("Element 3"); 
leftModel.addElement("Element 5"); 
leftModel.addElement("Element 6"); 
leftModel.addElement("Element 7"); 

JList leftList = new JList(leftModel); 

DefaultListModel rightModel = new DefaultListModel(); 
JList rightList = new JList(rightModel); 

假設您有兩個JList組件,如上面代碼(左和右)所述。您必須編寫以下代碼將選定的值從左側傳輸到右側JList。

for(Object selectedValue:leftList.getSelectedValuesList()){ 
    rightModel.addElement(selectedValue); 
    leftModel.removeElement(selectedValue); 
}