использовать JList для отображения объектов TreeMap - PullRequest
1 голос
/ 24 октября 2011

Я хотел бы перебрать 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
}
}

Ответы [ 2 ]

0 голосов
/ 24 октября 2011

К сожалению, вы не показали, как вы получаете итератор (theInventory.inventoryUPCIterator()). Но я считаю, что вы написали что-то вроде map.entries (). Iterator (), которое возвращает итератор записей (то есть пар ключ-значение). Используйте взамен map.keySet () или key.values ​​() или используйте entry.getKey() при итерации записей.

0 голосов
/ 24 октября 2011

Вы только добавляете значение ключа в объект dlm

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

изменить вышеупомянутый цикл, чтобы добавить значение также

...