java - 使用 JList 显示 TreeMap 对象

标签 java swing iterator jlist defaultlistmodel

我想遍历 TreeMap 将对象添加到 DefaultListModel,然后添加到 JList。但是,列表中仅显示键值,而不显示对象。我该如何纠正这个问题?

参见下面的代码:

public class ViewInventoryInterface extends JFrame {
private Inventory theInventory; // reference to back end
private InventoryUPCIterator iter;
private DefaultListModel dlm;
private JList list;
private JScrollPane scroll;

public ViewInventoryInterface(Inventory theInventory) {
    this.theInventory = theInventory;
    iter = theInventory.inventoryUPCIterator(); //returns an iterator for the inventory
    dlm = new DefaultListModel();
    while (iter.hasNext()) {
        dlm.addElement(iter.next());
    }
    list = new JList(dlm);
    scroll = new JScrollPane(list);
    setTitle("Inventory");
    add(scroll);
    setSize(400, 400);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    setLocationRelativeTo(null);
    setVisible(true);

}
}

这是创建迭代器的类

公共(public)类 InventoryUPCIterator {

private Set<String> keys;
private Iterator<String> iter;

public InventoryUPCIterator(HashMap<String, ItemIndex> inventory) {
    TreeMap<String, ItemIndex> values = new TreeMap<String, ItemIndex>(
            inventory);
    // sorts the index according to the natural ordering of String values
    keys = values.keySet();// returns set of sorted keys
    iter = keys.iterator();
}

public boolean hasNext() {
    return iter.hasNext();
}

public String next() {
    return iter.next();

}

public void reset() {
    iter = keys.iterator();// start again from the beginning
}
}

最佳答案

您只是将键值添加到 dlm 对象中

while (iter.hasNext()) {
        dlm.addElement(iter.next());
    }

修改上面的循环以添加值

关于java - 使用 JList 显示 TreeMap 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879174/

相关文章:

java - 如何递归地获取链表的大小?

java - Java Swing 计时器和无限循环存在问题

python - 将列表拆分为不同长度的 block

java - 返回一个迭代器

java - 在 Windows 上从 jenkins 发送电子邮件时必须首先发出 STARTTLS 命令

java - Jersey 的 GZip 编码

java - 从文本文件中读取和拆分整数以加在一起?

java - 可由用户自定义的 Swing 菜单

java - 创建具有多个面板和一个框架的 GUI

java - HTMLDocument 迭代器跳过标签