繁体   English   中英

使用HashMap(Object)的一个值填充ComboBox

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM