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: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTNHR5gShI/AAAAAAAAAaQ/KUE3fbR0bXo/s800/FocusTraversalKeys.png

概要

デフォルトのTabキーに加えて、矢印キーでもフォーカス移動できるように設定します。

概要

デフォルトの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)に加えて、上下左右の矢印キーでもフォーカス移動できるようになっています。

解説

上記のサンプルでは、デフォルトのフォーカストラバーサルキー(TabShift+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を使用します。
  • JFrameJDialogに別々の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);

参考リンク

参考リンク

コメント

コメント