Недавно я добавил этот маленький драгоценный камень в свой класс утилит с графическим интерфейсом. Он просто добавляет новые ключи в ту же систему, которая меняет фокус [tab]:
public static void addUpDownToTraversalKeys(Component c)
{
addTraversalKeys(c, KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyEvent.VK_DOWN);
addTraversalKeys(c, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyEvent.VK_UP);
}
public static void addLeftRightToTraversalKeys(Component c)
{
addTraversalKeys(c, KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, KeyEvent.VK_RIGHT);
addTraversalKeys(c, KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, KeyEvent.VK_LEFT);
}
public static void addTraversalKeys(Component c, int keysetId, int...keyCodes)
{
HashSet<AWTKeyStroke> newKeys =
new HashSet<AWTKeyStroke>(
c.getFocusTraversalKeys(keysetId));
for (int keyCode : keyCodes)
newKeys.add(AWTKeyStroke.getAWTKeyStroke(keyCode, 0));
c.setFocusTraversalKeys(keysetId,newKeys);
}
Добавленный в мой класс GuiUtilities, простой вызов GuiUtilities.addUpDownToTraversalKeys(this);
внутри конструктора фрейма позволяет использовать клавиши со стрелками вверх и вниз для просмотра всех элементов. Обратите внимание, что addLeftRightToTraversalKeys()
не рекомендуется, если вы получили текстовые области;)