Swing/FunctionKeyStartEditing のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/FunctionKeyStartEditing へ行く。
- 1 (2011-03-07 (月) 15:56:35)
- 2 (2011-03-07 (月) 19:02:00)
- 3 (2011-03-07 (月) 20:38:44)
- 4 (2012-12-22 (土) 16:18:26)
- 5 (2013-07-25 (木) 20:59:23)
- 6 (2013-09-03 (火) 01:23:21)
- 7 (2014-06-03 (火) 21:28:38)
- 8 (2014-09-13 (土) 05:01:06)
- 9 (2014-10-25 (土) 23:51:40)
- 10 (2014-11-25 (火) 03:03:31)
- 11 (2015-02-25 (水) 17:38:36)
- 12 (2016-12-17 (土) 18:40:46)
- 13 (2017-12-06 (水) 20:26:05)
- 14 (2019-08-21 (水) 18:54:47)
- 15 (2021-04-13 (火) 17:53:21)
TITLE:JTableでキー入力によるセル編集自動開始を一部禁止する
Posted by aterai at 2011-03-07
JTableでキー入力によるセル編集自動開始を一部禁止する
JTableのセル編集自動開始をファンクションキーの場合だけ無効にします。Swing - JTable starts editing when F3 is pressed - howto disable?を参考にしています。
- &jnlp;
- &jar;
- &zip;
サンプルコード
JTable table = new JTable(model) {
//Swing - JTable starts editing when F3 is pressed - howto disable?
//http://forums.oracle.com/forums/thread.jspa?threadID=1348192
@Override public boolean editCellAt(int row, int column, EventObject e) {
if(e instanceof KeyEvent) {
int c = ((KeyEvent)e).getKeyCode();
if(KeyEvent.VK_F1<=c && c<=KeyEvent.VK_F21) {
return false;
}
}
return super.editCellAt(row, column, e);
}
}
解説
"ignore: F1,F4-F7,F9-"チェックボックスをチェックしている場合、ファンクションキー(Shift, Ctrl+Function Keyも含む)を押しても、セルの編集が開始されないようにJTable#editCellAt(...)メソッドをオーバラーライドしています。
- table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);の場合、キー入力(F2は除く)によるセルの編集開始が禁止になる
上記のサンプルには、InputMap、ActionMapにF3キーでbeepがなるようにアクションを追加しています。このアクションはJTable#editCellAtメソッドでのチェックとは別に実行されるので、デフォルトのF2キーでのstartEditing、F8キーでのfocusHeaderは、JTable#editCellAt(...)の戻り値とは関係なく有効になっています。
- JTable#processKeyBinding(...)をオーバーライドしてキー入力自体を弾くと、InputMapに追加したキーストロークも除かれるので、これらのアクションも実行されない