как положить jcheckbox в ячейку таблицы? - PullRequest
2 голосов
/ 13 марта 2010

Я не могу поместить jChceckBox в ячейку jTable. Скорее всего, я могу поместить checkBox в таблицу, но когда я запускаю модуль с этой таблицей, ячейка, где должен быть checkBox, показывает текст «true» или «false». Поведение этой ячейки такое же, как у флажка, но вместо флажка отображается текстовое значение.

Вот код.

DefaultTableModel dm = new DefaultTableModel();
dm.setDataVector(new Object[][]{{"dd", "Edit", "Delete"},
                                {"dd","Edit", "Delete"}},
                 new Object[]{"Include","Component", "Ekvi"});
jTable1 = new javax.swing.JTable();

jTable1.setModel(dm);


JCheckBox chBox=new JCheckBox();
jTable1.getColumn("Include").setCellEditor(new DefaultCellEditor(chBox));
jScrollPane1.setViewportView(jTable1);

Ответы [ 2 ]

5 голосов
/ 14 марта 2010

Прочитайте JTable API и перейдите по ссылке на учебник Swing в разделе «Как использовать таблицу» для рабочего примера.

По сути, вы сохраняете логические значения в TableModel, затем переопределяете метод getColumnClass (), чтобы вернуть класс каждого столбца, и таблица выберет рендерер и редактор appriate.

1 голос
/ 13 марта 2010

Редактор ячеек определяет, как ведут себя данные в вашей таблице в соответствии с редактированием их значения, вам нужно TableCellRenderer, чтобы правильно отобразить флажок внутри ячейки:

final JCheckBox checkBox = new JCheckBox();
jTable1.getColumn("Include").setCellRenderer(new DefaultTableCellRenderer() {
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
      check.setSelected(((Boolean)value).booleanValue()) ;
      return check;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...