JBTable () { TableModel dataModel = new MyTableModel(); final JBTable result = new JBTable(dataModel); result.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); result.getColumnModel().getColumn(2).setCellRenderer(new DefaultTableCellRenderer() { @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { final Component component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if (value instanceof String && ((String)value).isEmpty()) { setText(JavaBundle.message("table.cell.constructors")); setForeground(NamedColorUtil.getInactiveTextColor()); } else if (value instanceof String) { setText((String)value); setForeground(UIUtil.getTableForeground(isSelected)); } return component; } }); TableCellEditor editor = result.getDefaultEditor(String.class); if (editor instanceof DefaultCellEditor) { ((DefaultCellEditor)editor).setClickCountToStart(1); } final TableColumn column = result.getTableHeader().getColumnModel().getColumn(0); column.setResizable(false); final int width = 15 + result.getTableHeader().getFontMetrics(result.getTableHeader().getFont()).stringWidth(result.getColumnName(0)); column.setMaxWidth(width); column.setMinWidth(width); return result; }