Допустим, у меня есть следующая JTable, которая отображается при нажатии кнопки:
| Name
------+------------
True | Hello World
False | Foo Bar
True | Foo
False | Bar
Я хочу сделать ячейки, которые изначально были истинными для JCheckBoxи все ячейки, которые были изначально ложными, чтобы ничего не отображать (без JCheckBox).Пользователь может проверять или снимать флажки JCheckBox в ячейках, которые изначально были истинными, что могло бы что-то сделать с созданной мной диаграммой.
Прямо сейчас мой рендерер ячеек отображает JCheckBoxes во всех ячейках, включая те, которые былиизначально false (отображает эти JCheckBoxes без галочек), но я не хочу ничего отображать в последнем.Вот мой код:
protected class CheckBoxCellRenderer extends JCheckBox implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (!(Boolean) tableModel.getValueAt(row, 0)) {
NoCheckBoxCellRenderer renderer = new NoCheckBoxCellRenderer();
return renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}
this.setSelected((Boolean) tableModel.getValueAt(row, 0));
return this;
}
}
protected class NoCheckBoxCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
this.setVisible(false);
return this;
}
}
В операторе if
я пытался использовать this.setVisible(false)
перед использованием NoCheckBoxCellRenderer
, но он не работал.Я думаю об использовании нескольких рендеров клеток для выполнения этой задачи.Возможно ли это сделать?Любой совет будет принята с благодарностью!