java - 我可以组合两个 DefaultListModel 吗?

标签 java swing jlist defaultlistmodel

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

这是我的 addButton block 中的代码:

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

关于java - 我可以组合两个 DefaultListModel 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35810535/

相关文章:

java - 如何将 JFileChooser 标签 "Look in:"更改为 "Save in:"(不是标题)?

java - java.awt.graphics 中图形的自定义方法

java - 如何在绑定(bind)80端口的单机上安装多个版本的tomcat?

java - jboss 上的 Yui 压缩器 StringIndexOutOfBoundsException

java - 在 getter/setter 中创建一个计数器?

java - 如何通过鼠标单击包含 HTML 表格的 JEditorPane 来获取行

java - 使用 Hibernate 将 java.util.Date 持久化到 MySql 中时出现问题

java - JList 覆盖单元格的 toString 以正确显示

java - 将自定义对象从 JList 拖放到 JLabel

java - 无法从选定的多行 Jlist 中获取每个项目?