TITLE:JTableのセルにJRadioButton

Posted by at 2011-04-25

JTableのセルにJRadioButton

`JTableのセルにJRadioButton`を配置し、全体で一つだけ選択できるように設定します。

  • &jnlp;
  • &jar;
  • &zip;
RadioButtonCellEditor.png

サンプルコード

DefaultTableModel model = new DefaultTableModel(data, columnNames) {
  @Override public Class<?> getColumnClass(int column) {
    return getValueAt(0, column).getClass();
  }
  @Override public void setValueAt(Object v, int row, int column) {
    if(v instanceof Boolean) {
      for(int i=0; i<getRowCount(); i++) {
        super.setValueAt(i==row, i, column);
      }
    }else{
      super.setValueAt(v, row, column);
    }
  }
};
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、2列目のカラムクラスを`Booleanに設定し、JRadioButtonを継承するセルレンダラ、セルエディタを使ってBoolean`値の表示、編集を行っています。

`ButtonGroupを使用することが出来ないので、1つの2列目セルの値をTUREにすると、ほかの行の2列目セルの値がすべてFALSEになるよう、TableModel#setValueAt(...)`メソッドをオーバーライドしています。

参考リンク

コメント