Предотвращение перемещения флажков в JTable - PullRequest
2 голосов
/ 18 октября 2011

У меня есть столбец в JTable с ячейками, отображаемыми как флажки ниже:

enter image description here

Как предотвратить перемещение флажков при каждом нажатии на него? Вот мой рендерер и редактор ячеек:

protected class CheckBoxCellRenderer extends JCheckBox implements TableCellRenderer {

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

}

protected class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {

  private final CheckBoxCellRenderer cell = new CheckBoxCellRenderer();
  private int row;

  public CheckBoxCellEditor() {
    cell.addActionListener(this);
  }

  @Override
  public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int vColIndex) {
    cell.setSelected(((Boolean) value).booleanValue());
    row = rowIndex;
    return cell;
  }

  @Override
  public Object getCellEditorValue() {
    return cell.isSelected();
  }

}

Спасибо!

1 Ответ

4 голосов
/ 18 октября 2011

Не создавайте пользовательский рендерер / редактор.

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

...