我可以组合两个DefaultListModels吗?

时间:2016-03-05 05:38:21

标签: java swing jlist defaultlistmodel

我正在尝试在java中组合两个defaultListModel,然后我可以将该模型设置为JList。该程序基本上是使用GUI从shoppingCart添加和删除项目。当我按下添加按钮时,它不应该从shoppingCart中删除项目,而是添加到该列表。

这是我在addButton块中的代码:

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);

1 个答案:

答案 0 :(得分: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并将它们的元素添加到你的和/或提供&#34;添加&#34;这样做的方法。无论如何,基本理念仍然相同

相关问题