Поведение JCheckBox в JTable - PullRequest
       23

Поведение JCheckBox в JTable

3 голосов
/ 14 сентября 2011

Я следовал инструкциям где-то в Интернете, чтобы вставить флажки в JTable. Вот мой код для этого:

  protected class JTableCellRenderer implements TableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,
        boolean isSelected, boolean hasFocus, int row, int column) {
      JCheckBox rendererComponent = new JCheckBox();
      rendererComponent.setSelected((Boolean) tableModel.getValueAt(row,
        column));
      return rendererComponent;
    }

  }

Мне удалось добавить флажки в JTable, но затем, когда я запускаю свою программу, я получаю следующее поведение:

enter image description here

Как разрешить пользователю устанавливать флажок вместо выбора True или False в раскрывающемся меню, когда он или она нажимает на флажок? Спасибо!

1 Ответ

6 голосов
/ 14 сентября 2011

Указания, которым вы следуете, плохи, так как вам не нужно возиться с рендерами или редакторами (и, кстати, ваша проблема в том, что вы изменили рендерер без изменения редактора).Все, что вам нужно сделать, это в вашем классе TableModel переопределить метод getColumnClass(int index) и заставить его возвращать Boolean.class для столбца, который нуждается в флажках.Вот и все.JTable автоматически использует флажок как для средства визуализации, так и для редактора колонки, решающего вашу проблему очень простым способом.Конечно, само собой разумеется, что данные для этого столбца должны быть булевы, чтобы это работало.

В руководстве Oracle по JTables вам расскажут все это и многое другое: Как использовать таблицы

...