Swing/FocusTraversalKeys のバックアップの現在との差分(No.9)
- category: swing folder: FocusTraversalKeys title: FocusTraversalKeysに矢印キーを追加してフォーカス移動 tags: [KeyboardFocusManager, Focus, Container] author: aterai pubdate: 2008-06-02T13:10:23+09:00 description: デフォルトのTabキーに加えて、矢印キーでもフォーカス移動できるように設定します。 image:
概要
デフォルトのTabキーに加えて、矢印キーでもフォーカス移動できるように設定します。
Screenshot
Advertisement
サンプルコード
KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
Set<AWTKeyStroke> forwardKeys = new HashSet<>(
focusManager.getDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0));
#spandel
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0));
#spanend
#spanadd
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0));
#spanend
focusManager.setDefaultFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forwardKeys);
Set<AWTKeyStroke> backwardKeys = new HashSet<>(
focusManager.getDefaultFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS));
backwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0));
#spandel
backwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0));
#spanend
#spanadd
backwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0));
#spanend
focusManager.setDefaultFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, backwardKeys);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、デフォルトのトラバーサルキー(Tab, Shift+Tab)に加えて、上下左右の矢印キーでもフォーカス移動できるように設定しています。 上記のサンプルでは、デフォルトのフォーカストラバーサルキー(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
を使用します。
- 各
JFrame
やJDialog
に別々のFocusTraversalKeys
を設定したい場合は、以下のようにContainer#setFocusTraversalKeys
を使用する
Set<AWTKeyStroke> forwardKeys = new HashSet<>(
frame.getFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS));
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0));
#spandel
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0));
#spanend
#spanadd
forwardKeys.add(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0));
#spanend
frame.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, forwardKeys);
参考リンク
- KeyboardFocusManager#setDefaultFocusTraversalKeys
- Container#setFocusTraversalKeys
- KeyboardFocusManager (Java Platform SE 8)
- Container#setFocusTraversalKeys(...) (Java Platform SE 8)
- How to Use the Focus Subsystem
- Focusの移動