我想创建一个 jcombobox,具有以下外观和行为:
1)在下拉列表中,每行应为代码编号和项目名称。
2)当用户选择其中一行时,在组合框的文本字段组件中只应显示代码编号,而不是项目名称。 (类似于这样)
我该如何做到这一点?
提前表示感谢。
1)在下拉列表中,每行应为代码编号和项目名称。
2)当用户选择其中一行时,在组合框的文本字段组件中只应显示代码编号,而不是项目名称。 (类似于这样)
我该如何做到这一点?
提前表示感谢。
不是很难:
Your JComboBox
items must be an Object for example:
public class Item {
private String number;
private String name;
// Constructor + Setters and Getters
}
A ListCellRenderer
which customize how to render the values in the popup list or in the text-field of 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());
}
});
祝你好运。
isSelected && list.getSelectedIndex() != index
。我认为这是最接近您需求的东西。毕竟,您可以根据cellHasFocus
参数设置一些前景和背景颜色,以获得更好的表示。 - STaefi