Component (@NotNull JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { myTable = table; myRow = row; myColumn = column; boolean isEnabled = true; final DefaultMutableTreeNode node = (DefaultMutableTreeNode)((TreeTable)table).getTree(). getPathForRow(row).getLastPathComponent(); Option key = null; if (node instanceof MyTreeNode) { isEnabled = ((MyTreeNode)node).isEnabled(); key = ((MyTreeNode)node).getKey(); } if (!table.isEnabled()) { isEnabled = false; } if (key != null && value != null) { JComponent customRenderer = getCustomValueRenderer(key.getOptionName(), value); if (customRenderer != null) { updateColors(customRenderer, table, isSelected); return customRenderer; } } if (value instanceof Boolean) { myCheckBox.setSelected(((Boolean)value).booleanValue()); myCheckBox.setEnabled(isEnabled); updateColors(myCheckBox, table, isSelected); return myCheckBox; } else if (value instanceof String) { myComboBox.setText((String)value); myComboBox.setEnabled(isEnabled); updateColors(myComboBox, table, isSelected); return myComboBox; } else if (value instanceof Integer) { if (key instanceof IntOption && ((IntOption)key).isDefaultValue(value)) { myIntLabel.setText(((IntOption)key).getDefaultValueText()); } else { @NlsSafe String text = value.toString(); myIntLabel.setText(text); } updateColors(myIntLabel, table, isSelected); return myIntLabel; } updateColors(myEmptyLabel, table, isSelected); return myEmptyLabel; }