我可以组合两个默认列表模型吗?



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

这是我在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);

基本答案是做类似的事情...

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,并将它们的元素添加到你的元素和/或提供一个"add"方法来做到这一点。 无论如何,基本思想保持不变

相关内容

  • 没有找到相关文章

最新更新