为不同选项卡下的按钮设置相同的快捷键

时间:2012-05-23 07:45:43

标签: java swing jbutton key-bindings keylistener

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

  

在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类型中放置(Object,Action)方法不适用   对于参数(String,void)   错误,(对不起这里的Java / Swing新手)

2 个答案:

答案 0 :(得分:4)

使用

答案 1 :(得分:3)

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