---
category: swing
folder: PreventStartCellEditing
title: JTableでキー入力によるセル編集開始を禁止する
tags: [JTable, TableModel, DefaultCellEditor]
author: aterai
pubdate: 2008-06-16T13:18:37+09:00
description: キー入力やマウスクリックによるJTableのセル編集開始を禁止します。
image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTRLZXQW1I/AAAAAAAAAgw/ufR0d0md6Bc/s800/PreventStartCellEditing.png
---
* 概要 [#summary]
キー入力やマウスクリックによる`JTable`のセル編集開始を禁止します。

#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTRLZXQW1I/AAAAAAAAAgw/ufR0d0md6Bc/s800/PreventStartCellEditing.png)

* サンプルコード [#sourcecode]
#code(link){{
table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);

DefaultCellEditor ce = (DefaultCellEditor) table.getDefaultEditor(Object.class);
ce.setClickCountToStart(Integer.MAX_VALUE);
}}

* 解説 [#explanation]
- `default`(上記のサンプルでのデフォルト)
-- `0`列目だけ`TableModel#isCellEditable()`が`false`を返すように設定
-- `JTable#isCellEditable()`メソッドをオーバーライドする場合は列の入れ替えに注意が必要
- `prevent KeyStroke autoStartsEdit`
-- `table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);`でキー入力(KBD{F2}は除く)によるセルの編集開始を禁止
-- `table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE)`でキー入力(KBD{F2}は除く)によるセルの編集開始を禁止
- `prevent mouse from starting edit`
-- `DefaultCellEditor#setClickCountToStart`に大きな値を設定して事実上マウスクリックによる編集開始を禁止
- `start cell editing only F2`
-- 上二つを設定して、セルの編集はKBD{F2}キーでのみ開始可能になるよう設定
- `isCellEditable return false`
-- `TableModel#isCellEditable`が常に`false`を返すように設定し、すべてのカラムでセルエディタの起動を禁止

* 参考リンク [#reference]
- [http://0xc000013a.blog96.fc2.com/blog-entry-19.html 片っ端から忘れていけばいいじゃない。  JTableで、セル上でキータイプされただけでは編集を開始しないようにする。JTable.autoStartsEdit]
- [http://www.stateofmind.fr/confluence/display/java/TIPs+JTable TIPs JTable - Space Of Mind - Confluence]
- [[JTableのセルを編集不可にする>Swing/CellEditor]]
- [[JTableでキー入力によるセル編集自動開始を一部禁止する>Swing/FunctionKeyStartEditing]]

* コメント [#comment]
#comment
#comment