Swing/RadioButtonCellEditor のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/RadioButtonCellEditor へ行く。
- 1 (2012-06-25 (月) 02:54:48)
- 2 (2012-12-22 (土) 15:56:54)
- 3 (2013-05-26 (日) 05:58:22)
- 4 (2013-08-16 (金) 16:33:13)
- 5 (2015-01-09 (金) 14:10:58)
- 6 (2016-04-22 (金) 16:03:14)
- 7 (2016-05-27 (金) 13:20:05)
- 8 (2017-03-08 (水) 13:05:11)
- 9 (2018-01-12 (金) 14:28:16)
- 10 (2018-10-23 (火) 18:19:18)
- 11 (2020-10-25 (日) 00:41:29)
- 12 (2022-08-19 (金) 12:20:07)
TITLE:JTableのセルにJRadioButton
Posted by aterai at 2011-04-25
JTableのセルにJRadioButton
JTableのセルにJRadioButtonを配置し、全体で一つだけ選択できるように設定します。
- &jnlp;
- &jar;
- &zip;
サンプルコード
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(Boolean.FALSE, i, column);
}
v = Boolean.TRUE;
}
super.setValueAt(v, row, column);
}
};
View in GitHub: Java, Kotlin解説
上記のサンプルでは、2列目のカラムクラスをBooleanに設定し、JRadioButtonを継承するセルレンダラ、セルエディタを使ってBoolean値の表示、編集を行っています。
ButtonGroup を使用することが出来ないので、1つの2列目セルの値をTUREにすると、ほかの行の2列目セルの値がすべてFALSEになるよう、TableModel#setValueAt(...)メソッドをオーバーライドしています。
参考リンク
- JTableのセル中にJRadioButtonを配置
- 一つのセルの中に複数のJRadioButtonを配置(ButtonGroup を使用して、セル中で一つだけ選択可能)。