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

我想创建一个具有以下外观行为的jcombobox:

  1)在下拉列表中,每一行应该是代码编号和项目名称. 2)当用户选择其中一行时,在组合框的文本字段组件中,只显示代码编号而不是项目名称.

(Something like this)

我怎样才能做到这一点?

提前致谢.

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

>您的JComboBox项必须是Object,例如:

public class Item {
     private String number;
     private String name;
     // Constructor + Setters and Getters
 }

> 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());
        }
    });

祝好运.

点赞