【问题标题】:Setting the same key shortcuts for buttons under different tabs为不同选项卡下的按钮设置相同的快捷键
【发布时间】:2012-05-29 17:50:30
【问题描述】:

我有一个多标签框架,我必须为不同标签下的某些按钮设置快捷方式,但它们必须使用相同的键。 例如:

在 tab1 下,我有一个“Do that”按钮,它应该对 F1 键做出反应, 但如果我要切换到 tab2,我应该有一个“执行此操作”按钮 这也应该对 F1 按钮做出反应,但 tab1 上的操作不应该 被解雇。

我尝试将keylistener 添加到选项卡/键/面板,但如果我按 F1 键,它仍然是第一个触发的操作。

但我认为原因是我使用了一个开关,它控制关键事件,例如case KeyEvent.VK_F1:mybutton1.doclick();

那么我如何在不同的选项卡下分离动作以分别做出反应?有没有办法获得焦点标签或其他东西?

问候。

编辑:Swing 动作的一些代码:

    private class SwingAction extends AbstractAction {
    public SwingAction() {
        putValue(NAME, "mybutton");
        putValue(SHORT_DESCRIPTION, "Some short description");
    }
    public void actionPerformed(ActionEvent e) {
        mybutton.getInputMap().put(KeyStroke.getKeyStroke("F1"),"pressed");
        mybutton.getActionMap().put("pressed",mybutton.doClick());

    }
}

我明白了:

ActionMap 类型中的 put(Object, Action) 方法不适用 对于参数(字符串,无效) 错误,(抱歉这里是 Java/Swing 新手)

【问题讨论】:

    标签: java swing jbutton key-bindings keylistener


    【解决方案1】:

    使用

    【讨论】:

    • 干杯尝试' mybutton.getInputMap().put(KeyStroke.getKeyStroke("F1"),"pressed"); mybutton.getActionMap().put("pressed",mybutton.doClick());'无法让它工作..:/
    • 不发布SSCCE 不知道,为我工作,rest is described here,你的SSCCE could be based on,@Hovercraft Full Of Eels,Pete 谢谢你在这里的两个很棒的帖子:-)
    • @trashgod 对JButton and KeyBindings 的出色描述
    【解决方案2】:

    KeyStroke 绑定到按钮的doClick() 具有视觉和听觉反馈的优势;但是,正如您所观察到的,doClick() 不是Action。相反,创建一个调用给定按钮的doClick() 方法的Action,并将其绑定到所需的KeyStroke,如example 所示。

    【讨论】:

      猜你喜欢
      • 2017-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 2022-06-30
      • 1970-01-01
      相关资源
      最近更新 更多