2010-01-13 5 views
0

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

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

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

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

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

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

ответ

1

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

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

+0

setFocusTraversalKeys() с пустым набором сделал трюк! Огромное спасибо. –

Смежные вопросы