Swing/CellEditor の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/CellEditor へ行く。
- Swing/CellEditor の差分を削除
--- category: swing folder: CellEditor title: JTableのセルを編集不可にする tags: [JTable, TableModel, TableCellEditor] author: aterai pubdate: 2004-06-14T05:31:42+09:00 description: JTableのすべてのセルを編集不可にする方法をテストします。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTIgUbMHLI/AAAAAAAAAS4/v0jIwB26ie4/s800/CellEditor.png --- * 概要 [#summary] `JTable`のすべてのセルを編集不可にする方法をテストします。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTIgUbMHLI/AAAAAAAAAS4/v0jIwB26ie4/s800/CellEditor.png) * サンプルコード [#sourcecode] #code(link){{ JTable table = new JTable(new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { return false; } }); }} * 解説 [#explanation] 上記のサンプルは以下の`3`種類の設定でセルを編集不可にする方法をテストしています。 - `Override TableModel#isCellEditable(...) { return false; }` -- テーブルモデルの`TableModel#isCellEditable()`メソッドが常に`false`を返すようにオーバーライドしてすべてのセルを編集不可に設定 -- `JTable#isCellEditable()`メソッドをオーバーライドする方法もある --- この場合例えば同じ`TableModel`を使用する`2`つの`JTable`で片方だけ編集不可にする設定が可能 --- たとえば同じ`TableModel`を使用する`2`つの`JTable`で片方だけ編集不可にする設定が可能 - `JTable#setDefaultEditor(Object.class, null);` -- 各カラムにセルエディタを設定しない、かつ`Object.class`が使用するデフォルトセルエディタを`null`にすることですべてのセルを編集不可にする #code{{ table.setDefaultEditor(Object.class, null); }} - `JTable#setEnabled(false)` -- `JTable#setEnabled(false)`でセルや行の選択なども含めてすべてのセルでの編集を禁止する #code{{ table.setEnabled(false); }} * 参考リンク [#reference] - [[JTableでキー入力によるセル編集開始を禁止する>Swing/PreventStartCellEditing]] * コメント [#comment] #comment - セルや行の選択をしないのであれば、`JTable#setFocusable(false)`と`JTable#setCellSelectionEnabled(false)`を合わせて利用することでも編集不可にできるようです。こちらは編集不可というより、文字通りフォーカスしないといった感じですが。 -- &user(shuna); &new{2009-10-23 (Fri) 03:12:58}; -- なるほど。KBD{F2}も含めてキー入力で編集開始できなくなる(マウスクリックでは可能?)ようですね。`table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);`よりすこし強力といった所でしょうか。いつか、こちらから[[JTableでキー入力によるセル編集開始を禁止する>Swing/PreventStartCellEditing]]に移動するかも。 -- &user(aterai); &new{2009-10-23 (金) 22:07:44}; #comment