我正在尝试重新定义JRadioButton中Tab键的行为,因此它的行为类似于其他GUI应用程序中的单选按钮,即:
我有一个Action,它执行必要的步骤来找到要聚焦的正确组件和所有内容,但是向InputMap添加一个条目似乎不起作用:
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), "jumpNext");
getActionMap().put("jumpNext", new JumpNextAction());
我在Tab的输入映射中的条目似乎被忽略,因为操作永远不会被执行。我想这可能是因为KeyboardFocusManager或相关的东西在它到达组件的输入映射之前消耗了Tab事件。
关于如何阻止此行为并改为使用自定义Tab行为的任何想法?
答案 0 :(得分:1)
由于KeyboardFocusManager,它可能没有像你所说的那样进入输入映射,但是如果你在它上面放置一个较低级别的keyListener,我敢打赌你可以截取并使用()事件,因此KeyboardFocusManager不会处理它。 / p>
或者,您可以在单选按钮上调用JComponent.setFocusTraversalKeys()方法,删除默认的Tab键,然后inputmap可能会像您尝试的那样处理它。