Swing/FocusTraversalKeys のバックアップの現在との差分(No.1)
TITLE:FocusTraversalKeysに矢印キーを追加してフォーカス移動
FocusTraversalKeysに矢印キーを追加してフォーカス移動
Posted by terai at 2008-06-02- 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
概要
デフォルトのTABキーに加えて、矢印キーでもフォーカス移動できるように設定します。- &jnlp;
- &jar;
- &zip;
#screenshot
サンプルコード
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
#spandel
Set<AWTKeyStroke> forwardKeys = new HashSet<AWTKeyStroke>(
#spanend
#spanadd
Set<AWTKeyStroke> forwardKeys = new HashSet<>(
#spanend
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);
#spandel
Set<AWTKeyStroke> backwardKeys = new HashSet<AWTKeyStroke>(
#spanend
#spanadd
Set<AWTKeyStroke> backwardKeys = new HashSet<>(
#spanend
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);
解説
上記のサンプルでは、デフォルトのトラバーサルキー(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
-
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
を使用する
#spandel
Set<AWTKeyStroke> forwardKeys = new HashSet<AWTKeyStroke>(
#spanend
#spanadd
Set<AWTKeyStroke> forwardKeys = new HashSet<>(
#spanend
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(int, java.util.Set)
- Container#setFocusTraversalKeys(int, java.util.Set)
- How to Use the Focus Subsystem
参考リンク
- KeyboardFocusManager (Java Platform SE 8)
- Container#setFocusTraversalKeys(...) (Java Platform SE 8)
- How to Use the Focus Subsystem
- Focusの移動