Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为不同选项卡下的按钮设置相同的快捷键_Java_Swing_Jbutton_Key Bindings_Keylistener - Fatal编程技术网

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

Java 为不同选项卡下的按钮设置相同的快捷键,java,swing,jbutton,key-bindings,keylistener,Java,Swing,Jbutton,Key Bindings,Keylistener,我有一个多选项卡的框架,我必须设置不同选项卡下某些按钮的快捷键,但它们必须使用相同的键。 例如: 在tab1下,我有一个“Do that”按钮,它应该对F1键做出反应, 但是如果我切换到tab2,我应该有一个“DoThis”按钮 这也会对F1按钮作出反应,但tab1上的操作不应作出反应 被解雇 我曾尝试将keysister添加到选项卡/键/面板,但如果按F1键,它仍然是触发的第一个操作 但我认为原因是我使用了一个开关,它控制键事件,比如case-KeyEvent.VK_F1:mybutton1.

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

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

我曾尝试将
keysister
添加到选项卡/键/面板,但如果按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中放置的方法(对象、操作)不适用 用于参数(字符串、void) 错误,(抱歉,这里是Java/Swing新手)

使用

  • 例如,您可以为实现
    Swing操作的任何JCOmponents设置相同的

  • (对于
    F1
    )输出到
    Swing动作
    ,在
    动作
    内,您必须调用

  • 永远不要使用


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

cheers Trouted'mybutton.getInputMap().put(KeyStroke.getKeyStroke(“F1”),“pressed”);mybutton.getActionMap().put(“按下”,mybutton.doClick());'无法使其工作..:/如果不发布一个,对我有用,你的,@装满鳗鱼的气垫船,皮特,谢谢你在这里发布了两个很棒的帖子:-)关于@trashgood的精彩描述