Swing/FunctionKeyStartEditing のバックアップの現在との差分(No.13)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - 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)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: FunctionKeyStartEditing title: JTableでキー入力によるセル編集自動開始を一部禁止する tags: [JTable, ActionMap, InputMap] author: aterai pubdate: 2011-03-07T15:56:35+09:00 description: JTableのセル編集自動開始をファンクションキーの場合だけ無効にします。 image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TXR_CO_Z9UI/AAAAAAAAA3I/7_3ml86ybo8/s800/FunctionKeyStartEditing.png --- * 概要 [#summary] `JTable`のセル編集自動開始をファンクションキーの場合だけ無効にします。[https://community.oracle.com/thread/1350192 Swing - JTable starts editing when F3 is pressed - howto disable?]を参考にしています。 #download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TXR_CO_Z9UI/AAAAAAAAA3I/7_3ml86ybo8/s800/FunctionKeyStartEditing.png) * サンプルコード [#sourcecode] #code(link){{ JTable table = new JTable(model) { //Swing - JTable starts editing when F3 is pressed - howto disable? //https://community.oracle.com/thread/1350192 // Swing - JTable starts editing when F3 is pressed - howto disable? // https://community.oracle.com/thread/1350192 @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); } } }} * 解説 [#explanation] - `ignore: F1,F4-F7,F9-` -- チェックボックスをチェックしている場合、ファンクションキー(KBD{Shift}, KBD{Ctrl+Function}キーも含む)を押しても、セルの編集が開始されないように`JTable#editCellAt(...)`メソッドをオーバーライド -- チェックボックスをチェックしている場合、ファンクションキー(KBD{Shift}やKBD{Ctrl+Function}キーも含む)を押してもセルの編集が開始されないように`JTable#editCellAt(...)`メソッドをオーバーライド - `table.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);` -- キー入力(KBD{F2}は除く)によるセルの編集開始を禁止 -- KBD{F2}は除くキー入力でのセルの編集開始を禁止 -- [[JTableでキー入力によるセル編集開始を禁止する>Swing/PreventStartCellEditing]] ---- 上記のサンプルでは、`InputMap`、`ActionMap`にKBD{F3}キーで`beep`が鳴るようにキーストロークとアクションを追加しています。このキーストロークは`JTable#editCellAt`メソッドでのキー入力チェックとは別に実行されるので、デフォルトのKBD{F2}キーでの`startEditing`、KBD{F8}キーでの`focusHeader`は、`JTable#editCellAt(...)`の戻り値とは関係なく有効になっています。 - 上記のサンプルでは`InputMap`、`ActionMap`にKBD{F3}キーで`beep`が鳴るようにキーストロークとアクションを追加 -- このキーストロークは`JTable#editCellAt`メソッドでのキー入力チェックとは別に実行されるので、デフォルトのKBD{F2}キーでの`startEditing`、KBD{F8}キーでの`focusHeader`は`JTable#editCellAt(...)`の戻り値とは関係なく有効になる - `JTable#processKeyBinding(...)`をオーバーライドしてキー入力自体を無視すると`InputMap`に追加したキーストロークも除外されるため、これらのアクションも実行されない - `JTable#processKeyBinding(...)`をオーバーライドしてキー入力自体を弾くと、`InputMap`に追加したキーストロークも除かれるので、これらのアクションも実行されない * 参考リンク [#reference] - [https://community.oracle.com/thread/1350192 Swing - JTable starts editing when F3 is pressed - howto disable?] - [[JTableでキー入力によるセル編集開始を禁止する>Swing/PreventStartCellEditing]] * コメント [#comment] #comment #comment