Component (JTable table, Object value, boolean isSelected, int row, int column) { if (value instanceof ListWithSelection options) { comboBox.setModel(new CollectionComboBoxModel(options)); if (options.getSelection() == null) { options.selectFirst(); } comboBox.setSelectedItem(options.getSelection()); } else { Enum enumValue = (Enum)value; Class enumClass = enumValue.getDeclaringClass(); ComboBoxModel model = comboBox.getModel(); if (!(model instanceof EnumComboBoxModel && model.getSize() > 0 && ((Enum)model.getElementAt(0)).getDeclaringClass() == enumClass)) { //noinspection unchecked comboBox.setModel(new EnumComboBoxModel(enumClass)); } comboBox.setSelectedItem(value); } return comboBox; }