Swing/CellEditor のバックアップの現在との差分(No.15)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/CellEditor へ行く。
- 1 (2004-07-09 (金) 07:38:20)
- 2 (2004-10-08 (金) 06:18:00)
- 3 (2004-11-04 (木) 10:02:54)
- 4 (2005-04-28 (木) 04:33:03)
- 5 (2005-10-23 (日) 14:21:49)
- 6 (2006-02-27 (月) 15:30:55)
- 7 (2006-04-12 (水) 19:35:39)
- 8 (2006-06-21 (水) 13:56:41)
- 9 (2006-07-19 (水) 10:42:55)
- 10 (2006-07-21 (金) 14:10:30)
- 11 (2007-04-04 (水) 13:02:48)
- 12 (2007-10-30 (火) 21:13:03)
- 13 (2008-03-14 (金) 22:20:39)
- 14 (2008-03-19 (水) 14:50:21)
- 15 (2008-05-20 (火) 21:45:33)
- 16 (2008-06-16 (月) 14:12:52)
- 17 (2009-10-23 (金) 21:12:58)
- 18 (2010-12-06 (月) 18:08:49)
- 19 (2013-04-10 (水) 02:41:18)
- 20 (2013-07-26 (金) 00:58:54)
- 21 (2014-11-14 (金) 02:43:33)
- 22 (2014-12-02 (火) 17:37:08)
- 23 (2016-02-27 (土) 22:37:20)
- 24 (2016-09-01 (木) 21:32:55)
- 25 (2017-05-30 (火) 20:38:14)
- 26 (2018-05-17 (木) 16:32:08)
- 27 (2020-05-10 (日) 02:34:15)
- 28 (2021-11-03 (水) 02:24:55)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTableのセルを編集不可にする #navi(../) *JTableのセルを編集不可にする [#g3871d47] Posted by [[terai]] at 2004-06-14 --- 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`のすべてのセルを編集不可にする方法をテストします。 #contents #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTIgUbMHLI/AAAAAAAAAS4/v0jIwB26ie4/s800/CellEditor.png) **概要 [#dfb9bc74] JTableのセルを編集不可にします。 -&jnlp; -&jar; -&zip; #screenshot **サンプルコード [#x41114f8] #code{{ * サンプルコード [#sourcecode] #code(link){{ JTable table = new JTable(new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { @Override public boolean isCellEditable(int row, int column) { return false; } }); }} **解説 [#y1fb1620] 上記のサンプルは、以下の三種類の方法で、セルを編集不可にすることが出来ます。 * 解説 [#explanation] 上記のサンプルは以下の`3`種類の設定でセルを編集不可にする方法をテストしています。 - "isCellEditable return false" -- テーブルモデルのTableModel#isCellEditable()メソッドが常にfalseを返すようにオーバーライドして、すべてのセルを編集不可にしています。 - "setDefaultEditor(Object.class, null)" -- 各カラムにセルエディタを設定しない、かつObject.classが使用するデフォルトセルエディタをnullにした場合も、すべてのセルを編集不可にすることができます。 - `Override TableModel#isCellEditable(...) { return false; }` -- テーブルモデルの`TableModel#isCellEditable()`メソッドが常に`false`を返すようにオーバーライドしてすべてのセルを編集不可に設定 -- `JTable#isCellEditable()`メソッドをオーバーライドする方法もある --- たとえば同じ`TableModel`を使用する`2`つの`JTable`で片方だけ編集不可にする設定が可能 - `JTable#setDefaultEditor(Object.class, null);` -- 各カラムにセルエディタを設定しない、かつ`Object.class`が使用するデフォルトセルエディタを`null`にすることですべてのセルを編集不可にする #code{{ table.setDefaultEditor(Object.class, null); }} - "setEnabled(false)" -- JTable#setEnabled(false)してしまえば、すべてのセルでの編集を禁止することができますが、セルや行の選択なども不可能になってしまいます。 - `JTable#setEnabled(false)` -- `JTable#setEnabled(false)`でセルや行の選択なども含めてすべてのセルでの編集を禁止する #code{{ table.setEnabled(false); }} //**参考リンク **コメント [#s3a072c4] * 参考リンク [#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