Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重新定义JRadioButton中Tab键的行为?_Java_Swing_Radio Button_Keyboard Events - Fatal编程技术网

Java 重新定义JRadioButton中Tab键的行为?

Java 重新定义JRadioButton中Tab键的行为?,java,swing,radio-button,keyboard-events,Java,Swing,Radio Button,Keyboard Events,我试图重新定义JRadioButton中Tab键的行为,使其行为类似于其他GUI应用程序中的单选按钮,即: 箭头键在ButtonGroup(按钮组)中的单选按钮之间循环(我有这个功能) 选项卡将焦点移动到组中最后一个单选按钮后的下一个组件(问题区域) 我有一个操作,它执行必要的步骤来找到要聚焦的正确组件和所有内容,但是向InputMap添加条目似乎不起作用: getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), "jump

我试图重新定义JRadioButton中Tab键的行为,使其行为类似于其他GUI应用程序中的单选按钮,即:

  • 箭头键在ButtonGroup(按钮组)中的单选按钮之间循环(我有这个功能)
  • 选项卡将焦点移动到组中最后一个单选按钮后的下一个组件(问题区域)
我有一个操作,它执行必要的步骤来找到要聚焦的正确组件和所有内容,但是向InputMap添加条目似乎不起作用:

getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), "jumpNext");
getActionMap().put("jumpNext", new JumpNextAction());
我在选项卡的输入映射中的条目似乎被忽略,因为该操作从未执行过。我猜想这可能是因为KeyboardFocusManager或其他相关的东西在Tab事件到达组件的输入映射之前正在消费它


关于如何停止此行为并使用自定义选项卡行为,您有什么想法吗?

由于KeyboardFocusManager,它可能无法像您所说的那样访问inputmap,但是如果您在其上放置一个较低级别的keyListener,我打赌您可以拦截并使用()事件,以便KeyboardFocusManager无法处理它

或者,您可以在单选按钮上调用JComponent.setFocusTraversalKeys()方法,删除默认的tab键,然后inputmap可以像您尝试的那样处理它

带有空集合的setFocusTraversalKeys()成功了!非常感谢。