java - 将值和标签设置为 JComboBox

标签 java swing label jcombobox

我有一个 JComboBox,其中的项目是查询的结果。该组合显示了从查询中获取的所有类别名称,对吧?好的,它有效。现在我需要给每个项目一个值,这将是产品的 ID。

这是我到目前为止所得到的:

    final JComboBox proveedorCombo = new JComboBox();

    contentPanel.add(proveedorCombo);

    ProveedorDAO dao = new ProveedorDAO();

    List<Proveedor> proveedor = dao.getAll();

    Object[][] elementos = new Object[proveedor.size()][2];

    for (int i = 0; i < proveedor.size(); i++) {
        Proveedor p = proveedor.get(i);
        elementos[i][0] = p.getId();
        elementos[i][1] = p.getNombre();
        proveedorCombo.addItem(elementos[i][1]);
    }

正如您在代码中看到的,每个项目的“标签”就是它的名称。现在,我如何设置每个项目的 ID,以便我可以在之后进行操作?

谢谢,并尝试简单地回答,我在尝试获得这个 Java 东西时遇到了最困难的时期!哈!

最佳答案

JComboBox 默认情况下使用渲染器,该渲染器使用 toString() 方法来显示对象数据。因此您可以创建自己的渲染类来自定义 View 。

这就是它的设计方式。

proveedorCombo.setRenderer( new DefaultListCellRenderer(){

        @Override  
        public Component getListCellRendererComponent(
            JList list, Object value, int index,
            boolean isSelected, boolean cellHasFocus)
        {
            super.getListCellRendererComponent(list, value, index,
                isSelected, cellHasFocus);

                if(value != null){
                 Proveedor proveedor = (Proveedor)value;
                 setText( proveedor.getName());
                }
            return this;
        }
});

另一种黑客方法是从 Proveedor 重写 toString() 或创建使用 toString() 的适配器类,但此解决方案不是比另一个灵活得多。

public class Proveedor {

//in some part
@Override
public String toString(){
    return this.nombre;
}

}

如果您想从零开始填充,请在组合框中。

proveedorCombo.setModel(new DefaultComboBox(new Vector<Proveedor>(dao.getAll())));

或者,如果您有以前的数据并且想要维护。

for(Proveedor p : dao.getAll){
    proveedorCombo.addItem(p);
}

关于java - 将值和标签设置为 JComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18024246/

相关文章:

java - 我在编写静态方法时遇到问题

java - 删除选定的 JTable 元素

java - 在 JFrame 中创建快捷方式

php - 无需插件即可自定义 WooCommerce 产品数据标签 - WEIGHT

html - 以标签为中心的复选框

java - Android Studio 和 Firebase : CardView Loading Problem

java - Mule - 如何访问Java组件内的流名称?

java - Gif 图像描述符索引

Java Swing 定时器倒计时

HTML <label> 歧义(主要是自己脑子里)...?有人可以澄清吗?