Component (JTable table, Object value, boolean isSelected, int row, int column) { String currentValue = (String)value; final JComboBox component = (JComboBox)super.getTableCellEditorComponent(table, value, isSelected, row, column); component.removeActionListener(delegate); component.setBorder(null); component.removeAllItems(); final List<String> items = getComboBoxItems(); int selected = -1; for (int i = 0; i < items.size(); i++) { final String item = items.get(i); component.addItem(item); if (Objects.equals(item, currentValue)) { selected = i; } } if (selected == -1) { component.setEditable(true); component.setSelectedItem(currentValue); component.setEditable(false); } else { component.setSelectedIndex(selected); } component.setEditable(isComboboxEditable()); component.addActionListener(delegate); return component; }