1

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
}
}
4

2 に答える 2

0

キー値をdlmオブジェクトに追加するだけです

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

上記のループを変更して、値も追加します

于 2011-10-24T17:11:50.527 に答える
0

残念ながら、イテレータ ( ) を取得する方法を示していませんtheInventory.inventoryUPCIterator()。しかし、エントリの反復子 (つまり、キーと値のペア) を返す map.entries().iterator() のようなものを書いたと思います。代わりに map.keySet() または key.values() を使用するかentry.getKey()、エントリを反復するときに使用します。

于 2011-10-24T17:33:19.243 に答える