JTableのセルにJRadioButton
Total: 9903, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JTableのセルにJRadioButtonを配置し、全体で一つだけ選択できるように設定します。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
上記のサンプルでは、2列目のカラムクラスをBooleanに設定し、JRadioButtonを継承するセルレンダラー、セルエディタを使ってBoolean値の表示と編集を行っています。
- セルレンダラーとセルエディタの
JRadioButtonは行数分ではなく描画用にそれぞれ一つだけ作成して使用 ButtonGroupを使用してもJTableの列内に配置されたJRadioButtonの一つだけを選択状態にする制限は適用不可- 代わりに
2列目の指定したセルの値をtrueにすると残りの行の2列目セルの値がすべてfalseになるようTableModel#setValueAt(...)メソッドをオーバーライド
Reference
- JTableのセル中にJRadioButtonを配置
- 一つのセルエディタ中に複数の
JRadioButtonを配置(ButtonGroupを使用して、セル中で一つだけ選択可能)
- 一つのセルエディタ中に複数の