Swing/RadioButtonCellEditor のバックアップ差分(No.6)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - 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 tags: [JTable, JRadioButton, TableCellRenderer, TableCellEditor] author: aterai pubdate: 2011-04-25T17:34:01+09:00 description: JTableのセルにJRadioButtonを配置し、全体で一つだけ選択できるように設定します。 --- * 概要 [#o78918d7] `JTable`のセルに`JRadioButton`を配置し、全体で一つだけ選択できるように設定します。 #download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TbUwB1XoMEI/AAAAAAAAA6M/5VwHykCV4OI/s800/RadioButtonCellEditor.png) * サンプルコード [#d4849766] #code(link){{ 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); if (v instanceof Boolean) { for (int i = 0; i < getRowCount(); i++) { super.setValueAt(i == row, i, column); } }else{ } else { super.setValueAt(v, row, column); } } }; }} * 解説 [#g90ccab3] 上記のサンプルでは、`2`列目のカラムクラスを`Boolean`に設定し、`JRadioButton`を継承するセルレンダラ、セルエディタを使って`Boolean`値の表示、編集を行っています。 `ButtonGroup`を使用することが出来ないので、ある`2`列目セルの値を`TRUE`にすると、ほかの行の`2`列目セルの値がすべて`FALSE`になるよう、`TableModel#setValueAt(...)`メソッドをオーバーライドしています。 * 参考リンク [#o1c7f4c6] - [[JTableのセル中にJRadioButtonを配置>Swing/RadioButtonsInTableCell]] -- 一つのセルの中に複数の`JRadioButton`を配置(`ButtonGroup`を使用して、セル中で一つだけ選択可能)。 * コメント [#q4c16bbb] #comment #comment