Java jcombobox 下拉列表中的不同文本和文本字段中的不同文本
Java jcombobox different text in its dropdown and different text in its textfield
我想创建一个具有以下外观行为的 jcombobox:
1) 在下拉列表中,每一行都应该是一个代码编号和一个项目名称。
2) 当用户选择其中一行时,在组合框的文本字段组件中,只有代码编号应该出现,而不是项目名。
(Something like this)
我该怎么做?
提前致谢。
通过两个步骤做到这一点并不难:
您的 JComboBox
项必须是对象,例如:
public class Item {
private String number;
private String name;
// Constructor + Setters and Getters
}
A 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());
}
});
祝你好运。
我想创建一个具有以下外观行为的 jcombobox:
1) 在下拉列表中,每一行都应该是一个代码编号和一个项目名称。
2) 当用户选择其中一行时,在组合框的文本字段组件中,只有代码编号应该出现,而不是项目名。
(Something like this)
我该怎么做?
提前致谢。
通过两个步骤做到这一点并不难:
您的
JComboBox
项必须是对象,例如:public class Item { private String number; private String name; // Constructor + Setters and Getters }
A
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()); } });
祝你好运。