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

标签 java jcombobox

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

提前致谢。

最佳答案

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

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

祝你好运。

关于Java jcombobox 下拉列表中的不同文本和文本字段中的不同文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110416/

相关文章:

java - EditText 不更新其文本

java - 使用BeanUtils.copyProperties从Mybatis创建的对象到Spring Bean,Spring bean中的属性为null。为什么?

java - 在 OutputStream 上调用 close() 会切断日志文件的输出

java - 选择了空值但不在 ComboBoxModel 中的 JComboBox 首选大小

java - 参数化 Swing 对话框

java - 为什么可以在父类(super class)构造函数中调用子类对象的私有(private)方法......?

java - 并发LRU缓存实现

java - 如何在填充时保持 JComboBox 的弹出菜单打开?

java - 修改 JComboBox Swing 的 toString() 方法

java - JComboBox 多次输入相同内容