【问题标题】:use JList to display TreeMap Objects使用 JList 显示 TreeMap 对象
【发布时间】:2011-10-24 17:04:08
【问题描述】:

我想遍历 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);

}
}

这是创建迭代器的类

公共类 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
}
}

【问题讨论】:

  • 因为你只是添加键,我会给你提示......检查这个 while (iter.hasNext()) { dlm.addElement(iter.next()); }

标签: java swing iterator jlist defaultlistmodel


【解决方案1】:

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

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

修改上述循环以添加值

【讨论】:

    【解决方案2】:

    很遗憾,您没有展示如何获得迭代器 (theInventory.inventoryUPCIterator())。但我相信你写了类似 map.entries().iterator() 的东西,它返回条目的迭代器(即键值对)。在迭代条目时使用 map.keySet() 或 key.values() 或使用entry.getKey()

    【讨论】:

    • 我添加了创建迭代器的类的代码。看看吧。
    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 2016-10-02
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多