Component (JTable table, Object value, boolean isSelected, int row, int column) { Component comp = table.getCellRenderer(row, column).getTableCellRendererComponent(table, value, false, false, row, column); Object realValue = table.getModel().getValueAt(row, column); if (comp instanceof JLabel) { value = ((JLabel)comp).getText(); } if (realValue instanceof Color) { Rectangle cellRect = table.getCellRect(row, column, true); ColorChooserService.getInstance().showPopup(null, (Color)realValue, new ColorListener() { @Override public void colorChanged(Color color, Object source) { if (component != null) { component.setBackground(color); String name = myModel.myProperties.get(row).propertyName; myModel.myProperties.set(row, new PropertyBean(name, color)); } } }, new RelativePoint(table, new Point(cellRect.x + JBUI.scale(6), cellRect.y + cellRect.height))); return null; } Component result = super.getTableCellEditorComponent(table, value, isSelected, row, column); ((JComponent)result).setBorder(BorderFactory.createLineBorder(JBColor.GRAY, 1)); return result; }