Swing/CellEditor のバックアップ差分(No.26)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - 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)
- 追加された行はこの色です。
- 削除された行はこの色です。
---
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]
上記のサンプルは、以下の三種類の設定で、セルを編集不可にする方法をテストしています。
- `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);
}}
- `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