0

我正在尝试重新定义 JRadioButton 中 Tab 键的行为,以便它的行为类似于其他 GUI 应用程序中的单选按钮,即:

  • 箭头键循环通过 ButtonGroup 中的单选按钮(我有这个工作)
  • Tab 将焦点移至组中最后一个单选按钮之后的下一个组件(问题区域)

我有一个 Action 可以执行必要的步骤来找到正确的焦点组件和所有内容,但是向 InputMap 添加一个条目似乎不起作用:

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

我在 Tab 的输入映射中的条目似乎被忽略了,因为该操作永远不会被执行。我想这可能是因为 KeyboardFocusManager 或相关的东西在它到达组件的输入映射之前消耗了 Tab 事件。

关于如何停止此行为并改为使用自定义 Tab 行为的任何想法?

4

1 回答 1

1

由于KeyboardFocusManager,它可能无法像您所说的那样进入输入图,但是如果您在其上放置较低级别的keyListener,我敢打赌您可以拦截并使用()该事件,因此KeyboardFocusManager 不会处理它。

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

于 2010-01-13T18:46:10.430 回答