Вы можете попробовать это:
Создайте класс Employee с именем поля и идентификатором, а затем создайте класс, который реализует ListCellRenderer
и расширяет JLabel
.Добавьте этот класс как Renderer к вашему JComboBox.Теперь вы можете установить имя как текст в JLabel. Теперь, когда вы получаете доступ к элементу comboBox, он возвращает вам JLabel, и вы можете получить имя в качестве видимого значения и идентификатор в качестве скрытого значения от того, которое вы установили в JLabel.
Метод JComboBox getSelectedItem()
возвращает объект, который можно привести к любому объекту, который был помещен в комбинированный список.Чтобы получить компонент, используемый для визуализации элементов, вызовите getRenderer()
.
Примечание: - Вы можете использовать другой компонент, кроме JLabel.
Демонстрация: -
public class ComboRenderer extends JLabel implements ListCellRenderer{
@Override
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
if(value != null){
Employee emp = (Employee) value;
setText(emp.getName());
return this;
}
return null;
}
}
Теперь, когда вы хотите добавить элемент в comboBox, используйте combo.addItem(empObject);
.Он будет отображать имя сотрудника в comboBox, а когда вы выполните getSelectedItem()
, он вернет вам объект сотрудника, и вы получите имя и идентификатор, оба принадлежащие этому объекту emp.