Вы можете добавлять объекты в ComboBox, а не только строки, поэтому что-то вроде этого должно сделать свое дело:
while(rs.next()){
int id=rs.getInt("company_id");
String category=rs.getString("company_name");
Object[] itemData = new Object[] {id, category};
cmbCategory.addItem(itemData);
}
И, как указал Гарри Джой, вы можете сказать свингу, как этот элемент должен отображатьсяиспользуя ListCellRenderer :
class MyListRenderer extends JLabel implements ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Object[] itemData = (Object[])value;
setText((String)itemData[1]);
return this;
}
}
, который впоследствии можно назначить для JComboBox:
cmbCategory.setRenderer(new MyListRenderer());
Таким образом, вы получаете очевидное преимущество:идентификатор и имя категории только в одном объекте, поэтому, когда пользователь выбирает элемент в выпадающем списке, вы можете получить доступ ко всем свойствам этого объекта (идентификатор и имя!).