Java jcombobox在其下拉列表中的不同文本和其文本字段中的不同文本

时间:2016-05-09 07:56:09

标签: java jcombobox

我想创建一个具有以下外观行为的jcombobox:
  1)在下拉列表中,每一行应该是一个代码编号和一个项目名称。
2)当用户选择其中一行时,在组合框的textfield组件中只显示代码编号,而不是项目名称。 (Something like this)
我怎么能这样做?

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用两个步骤来做到这一点并不困难:

  1. 您的JComboBox项必须是对象,例如:

    public class Item {
         private String number;
         private String name;
         // Constructor + Setters and Getters
     }
    
  2. 一个ListCellRenderer,用于自定义如何在弹出列表或JComboBox的文本字段中呈现值:

        JComboBox<Item> jc = new JComboBox<Item>();
        jc.setRenderer(new ListCellRenderer<Item>() {
            @Override
            public Component getListCellRendererComponent(
                    JList<? extends Item> list, Item value, int index, boolean isSelected, boolean cellHasFocus) {
                if(isSelected && list.getSelectedIndex () != index)
                    return new JLabel(value.getNumber());
    
                return new JLabel(value.getNumber() +" "+value.getName());
            }
        });
    
  3. 祝你好运。