我有一个ComboBox,我想填充产品名称。我有一个名为Producto的类,其值为:
private String name;
private String code;
private int price;
所以我创建了一个像这样的HashMap:
Map(Integer, Producto) mapProducto=new HashMap<Integer, Producto>();
我还有一个方法来填充这个HashMap:
Producto stockProducto=new Producto();
stockProducto.setNomProducto("Steel Bike");
stockProducto.setCodeProducto("BIC001");
stockProducto.setPrice(190000);
getMapProducto().put(1, stockProducto);
stockProducto.setNomProducto("Aluminium Bike");
stockProducto.setCodeProducto("BIC002");
stockProducto.setPrice(290000);
getMapProducto().put(1, stockProducto);
之后我填充ComboBox:
Iterator iter=getMapProducto().keySet().iterator();
while(iter.hasNext())
{
this.cboNomProducto.addItem(getMapProducto().get(iter.next()));
}
但是因为它收到了Producto类型的Object,所以它用奇怪的代码填充了Combo,我猜这是代码的内存方向。但我想只使用产品名称填充ComboBox。我怎样才能获得Object Producto的这个值?
提前致谢。
答案 0 :(得分:0)
您必须覆盖toString
。在这里,您只需要返回所需的name
。我假设您获得标准toString
值,该值将类名与类实例哈希值一起打印。
编辑1: JComboBox
始终从插入的对象toString
方法中派生显示的文本。它允许定义插入复杂的对象而不仅仅是字符串。你可以查看here。因此,在Producto
课程中包含以下方法
public String toString () {
return name;
}
答案 1 :(得分:0)
试试这个
Iterator iter=getMapProducto().keySet().iterator();
while(iter.hasNext())
{
this.cboNomProducto.addItem(getMapProducto().get(iter.next()).getNomProducto());
}
<强>详细信息:强>
getMapProducto().get(iter.next())
将返回无法直接设置为组合框的Producto
对象,您必须从该对象获取产品名称并添加到组合框中。
修改强>
Producto stockProducto=new Producto();
stockProducto.setNomProducto("Steel Bike");
stockProducto.setCodeProducto("BIC001");
stockProducto.setPrice(190000);
getMapProducto().put(1, stockProducto);
stockProducto = new Producto(); // You forgot this
stockProducto.setNomProducto("Aluminium Bike");
stockProducto.setCodeProducto("BIC002");
stockProducto.setPrice(290000);
getMapProducto().put(1, stockProducto);
如果您没有创建新的Producto
,那么HashMap
中的同一个对象会被引用两次而不是Producto