Swing/FocusTraversalKeys のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/FocusTraversalKeys へ行く。
- 1 (2008-06-02 (月) 13:10:23)
- 2 (2008-06-03 (火) 18:43:45)
- 3 (2013-01-20 (日) 23:53:01)
- 4 (2013-07-26 (金) 01:27:30)
- 5 (2013-08-20 (火) 14:24:29)
- 6 (2014-03-18 (火) 18:29:20)
- 7 (2015-11-04 (水) 04:18:11)
- 8 (2017-04-04 (火) 14:17:08)
- 9 (2017-04-25 (火) 17:13:11)
- 10 (2018-02-21 (水) 13:03:51)
- 11 (2018-03-30 (金) 13:06:56)
- 12 (2020-03-28 (土) 20:49:55)
- 13 (2021-10-05 (火) 02:06:37)
TITLE:FocusTraversalKeysに矢印キーを追加してフォーカス移動
FocusTraversalKeysに矢印キーを追加してフォーカス移動
Posted by terai at 2008-06-02
概要
デフォルトのTABキーに加えて、矢印キーでもフォーカス移動できるように設定します。
- &jnlp;
- &jar;
- &zip;
#screenshot
サンプルコード
KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
Set<AWTKeyStroke> forwardKeys = new HashSet<AWTKeyStroke>(
focusManager.getDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0));
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0));
focusManager.setDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forwardKeys);
Set<AWTKeyStroke> backwardKeys = new HashSet<AWTKeyStroke>(
focusManager.getDefaultFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));
backwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0));
backwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0));
focusManager.setDefaultFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, backwardKeys);
解説
上記のサンプルでは、デフォルトのトラバーサルキー(TAB,SHIFT+TAB)に加えて、上下左右の矢印キーでもフォーカス移動できるようになっています。
- KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS
- KeyEvent.VK_RIGHT, KeyEvent.VK_DOWN
- KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS
- KeyEvent.VK_LEFT, KeyEvent.VK_UP
各JFrameやJDialogに別々のFocusTraversalKeysを設定したい場合は、Container#setFocusTraversalKeysを使用します。
Set<AWTKeyStroke> forwardKeys = new HashSet<AWTKeyStroke>(
frame.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0));
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0));
frame.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forwardKeys);
参考リンク
- KeyboardFocusManager#setDefaultFocusTraversalKeys
- Container#setFocusTraversalKeys
- How to Use the Focus Subsystem