2016-03-05 90 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

相关问题