JComponent () { ExperimentalFeature[] features = Experiments.EP_NAME.getExtensions(); JBTable table = new JBTable(createModel(features)); table.setShowGrid(false); table.getEmptyText().setText(IdeBundle.message("empty.text.no.features.available")); table.getColumnModel().getColumn(0).setCellRenderer(getIdRenderer()); table.getColumnModel().getColumn(1).setCellRenderer(getValueRenderer()); table.getColumnModel().getColumn(1).setCellEditor(new BooleanTableCellEditor()); table.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JTextArea myDescription = new JTextArea(4, 50); myDescription.setMargin(JBUI.insets(2)); myDescription.setWrapStyleWord(true); myDescription.setLineWrap(true); myDescription.setEditable(false); table.getSelectionModel().addListSelectionListener((e) -> myDescription.setText(features[table.getSelectedRow()].description)); final JScrollPane label = ScrollPaneFactory.createScrollPane(myDescription); BorderLayoutPanel descriptionPanel = JBUI.Panels.simplePanel(label) .withBorder(IdeBorderFactory.createTitledBorder(IdeBundle.message("border.title.description"), false)); return JBUI.Panels.simplePanel(ScrollPaneFactory.createScrollPane(table)) .addToBottom(descriptionPanel); }