2016-03-05 85 views
0

我想在java中合併兩個defaultListModels,然後我可以將該模型設置爲JList。這個程序基本上是使用GUI添加和刪除購物車中的物品。當我按下添加按鈕時,它不應該從shoppingCart中刪除項目,而是添加到該列表中。我可以組合兩個DefaultListModels嗎?

這裏是Add按鈕塊我的代碼:

DefaultListModel booksToAdd = new DefaultListModel(); 
booksToAdd.addElement(availableBooks.getSelectedValuesList()); 

DefaultListModel booksAdded = new DefaultListModel(); 
booksAdded.addElement(shoppingCart.getModel()); 


// this is where it does not work. I know I cannot just add these two, but I need 
//some way to combine them. 

shoppingCart.setModel(booksAdded + booksToAdd); 

回答

2

最基本的答案是做這樣的事情......

for (int index = 0; index < from.getSize(); index++) { 
    to.addElement(from.getElementAt(index)); 
} 

可能被包裹在一個方法...

protected static <T> void addTo(ListModel<T> from, DefaultListModel<T> to) { 
    for (int index = 0; index < from.getSize(); index++) { 
     to.addElement(from.getElementAt(index)); 
    } 
} 

這將使它更容易使用,像...

現在
DefaultListModel booksToAdd = new DefaultListModel(); 
DefaultListModel booksAdded = new DefaultListModel(); 
//... 
DefaultListModel combined = new DefaultListModel(); 

addTo(booksToAdd, combined); 
addTo(booksAdded, combined); 

,如果你做這樣的事情很多,你可以設計自己的ListModel這要麼把通過構造一個或多個ListModel S和添加他們的元素,你的和/或提供的「添加」方法做到這一點。無論如何,基本思想保持不變

+0

謝謝你的作品!只有一個問題,當結果返回時,它也給了我一些結果中的[email protected]。有沒有辦法擺脫這個? –

+0

輸出表示使用對象的'toString'方法,你如何使用生成的'JList'來打印出來 – MadProgrammer

相關問題