[英]Populate ComboBox with one value of the HashMap(Object)
我有一个想用产品名称填充的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。 我如何只获得对象生产者的这个值?
提前致谢。
您必须重写toString
。 在这里,您只需返回所需的name
。 我假设您获得了标准的toString
值,该值将打印类名以及类实例哈希值。
编辑1: JComboBox
始终从插入的对象toString
方法派生显示的文本。 它可以明确地插入复杂的对象,而不仅仅是字符串。 您可以在这里查找。 因此,在您的Producto
类中包括以下方法
public String toString () {
return name;
}
尝试这个
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
两次引用同一对象,而不是2个不同的Producto
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.