我有这个 DefaultListModel
DefaultListModel listModel;
//constructor does the right hting... etc.. I skipped over a lot of code
JList jlist_available_items;
....
jlist_available_items= new JList(cartModel); //etc
一切工作几乎完美问题是
listModel.addElement(product);
如果我将其更改为 product.name 它看起来会正确,但行为错误[对象本身无法访问,只有名称]
正在将对象添加到视图中,而我要添加的只是对象名称。
当我将其更改为名称时,它会导致各种问题,因为我将对象存储在 hashmap 中,并且 hashmap 使用对象作为键,而不是 product.name 字符串。
原因是这个方法可以在 hashmap 中搜索正确的对象。
for (Product p : store.database.keySet()) {
if (jlist_available_items.getSelectedValuesList().contains(
(Product) p)) { // if item is selected
cart.addItem(p);
}
}
我怎样才能解决这个问题??我一直在尝试修复它和相关的错误大约两个小时=(!
样本输出也是
Product [description=descrion test, name=test]
这就是它正在打印的内容。我只想让它打印名称。=(!
对象也位于哈希图中。我可以遍历哈希图,直到一个对象具有相同的名称值,然后使用它,但我不想这样做。我想要一个更合适和可扩展的解决方案,即因为我很难想到一个。
顺便一提!这是 Swing 中的 GUI 应用程序!如果您想要图片,请询问 = )!
编辑:现在 nmy 列表单元格渲染器坏了!刚才还在工作... = (
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
Product product = (Product) value;
return this;
}
}