2

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

在 tab1 下,我有一个“Do that”按钮,它应该对 F1 键做出反应,但如果我要切换到 tab2,我应该有一个“Do this”按钮,它也应该对 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) 方法不适用于参数 (String, void) 错误,(抱歉这里是 Java/Swing 新手)

4

2 回答 2

4

利用

于 2012-05-23T07:51:39.190 回答
3

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

于 2012-05-23T10:00:00.433 回答