Переопределить поведение клавиши Tab в JRadioButton? - PullRequest
0 голосов
/ 13 января 2010

Я пытаюсь переопределить поведение клавиши Tab в JRadioButton, чтобы она работала как переключатели в других приложениях с графическим интерфейсом, то есть:

  • Клавиши со стрелками циклически переключаются между кнопками в ButtonGroup (у меня это работает)
  • Вкладка перемещает фокус на следующий компонент после последнего переключателя в группе (проблемная область)

У меня есть действие, которое выполняет необходимые шаги, чтобы найти правильный компонент для фокусировки и все такое, но добавление записи в InputMap, похоже, не работает:

getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), "jumpNext");
getActionMap().put("jumpNext", new JumpNextAction());

Моя запись во входной карте для Tab, кажется, игнорируется, так как действие никогда не выполняется. Я предполагаю, что это, вероятно, потому, что KeyboardFocusManager или что-то связанное с этим потребляет событие Tab, прежде чем оно попадет на карту ввода компонента.

Любые идеи о том, как я могу остановить это поведение и использовать вместо этого свое собственное поведение Tab?

1 Ответ

1 голос
/ 13 января 2010

Возможно, вы не получите доступ к карте ввода, как вы сказали, из-за KeyboardFocusManager, однако, если вы добавите в него keyListener более низкого уровня, держу пари, вы можете перехватить и использовать () событие, чтобы KeyboardFocusManager не обрабатывал его.

В качестве альтернативы вы можете вызывать метод JComponent.setFocusTraversalKeys () для переключателей, удаляя клавишу табуляции по умолчанию, а затем карта ввода может обработать ее, как вы пытались.

...