Swing/RadioButtonCellEditor のバックアップの現在との差分(No.7)
- category: swing folder: RadioButtonCellEditor title: JTableのセルにJRadioButton tags: [JTable, JRadioButton, TableCellRenderer, TableCellEditor] author: aterai pubdate: 2011-04-25T17:34:01+09:00 description: JTableのセルにJRadioButtonを配置し、全体で一つだけ選択できるように設定します。 image:
概要
概要
JTable
のセルにJRadioButton
を配置し、全体で一つだけ選択できるように設定します。
Screenshot
Advertisement
サンプルコード
サンプルコード
DefaultTableModel model = new DefaultTableModel(data, columnNames) {
@Override public Class<?> getColumnClass(int column) {
return getValueAt(0, column).getClass();
}
#spanadd
#spanend
@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
値の表示、編集を行っています。
解説
上記のサンプルでは、2
列目のカラムクラスをBoolean
に設定し、JRadioButton
を継承するセルレンダラー、セルエディタを使ってBoolean
値の表示と編集を行っています。
- セルレンダラとセルエディタの
JRadioButton
は、行数分ではなく、描画用にそれぞれ一つだけ作成して使用 -
ButtonGroup
を使用して、表中のJRadioButton
を一つだけ選択状態に制限することは出来ない - 代わりに、ある
2
列目セルの値をTRUE
にすると、ほかの行の2
列目セルの値がすべてFALSE
になるよう、TableModel#setValueAt(...)
メソッドをオーバーライド - セルレンダラーとセルエディタの
JRadioButton
は行数分ではなく描画用にそれぞれ一つだけ作成して使用 -
ButtonGroup
を使用してもJTable
の列内に配置されたJRadioButton
の一つだけを選択状態にする制限は適用不可 - 代わりに
2
列目の指定したセルの値をtrue
にすると残りの行の2
列目セルの値がすべてfalse
になるようTableModel#setValueAt(...)
メソッドをオーバーライド
参考リンク
参考リンク
- JTableのセル中にJRadioButtonを配置
- 一つのセルの中に複数の
JRadioButton
を配置(ButtonGroup
を使用して、セル中で一つだけ選択可能)。 - 一つのセルエディタ中に複数の
JRadioButton
を配置(ButtonGroup
を使用して、セル中で一つだけ選択可能)
- 一つのセルの中に複数の