我想创建一个具有以下外观行为的jcombobox:
1)在下拉列表中,每一行应该是一个代码编号和一个项目名称。
2)当用户选择其中一行时,在组合框的textfield组件中只显示代码编号,而不是项目名称。
(Something like this)
我怎么能这样做?
提前致谢。
答案 0 :(得分:1)
使用两个步骤来做到这一点并不困难:
您的JComboBox
项必须是对象,例如:
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());
}
});
祝你好运。