代码之家  ›  专栏  ›  技术社区  ›  Joe Attardi

重新定义jradiobutton中tab键的行为?

  •  0
  • Joe Attardi  · 技术社区  · 15 年前

    我正在尝试重新定义jradiobutton中tab键的行为,使其行为类似于其他GUI应用程序中的单选按钮,即:

    • 箭头键循环使用按钮组中的单选按钮(我有这个功能)
    • 选项卡将焦点移动到组中最后一个单选按钮之后的下一个组件(问题区域)

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

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

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

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

    1 回复  |  直到 15 年前
        1
  •  1
  •   Nemi    15 年前

    因为keyboardFocusManager,它可能无法像您所说的那样到达输入映射,但是如果您在它上面放置一个较低级别的keyListener,我打赌您可以截取并使用()事件,这样keyboardFocusManager就不会处理它。

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