Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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_Action_Awt_Key Bindings - Fatal编程技术网

Java 当应用程序不在焦点时如何自定义键绑定

Java 当应用程序不在焦点时如何自定义键绑定,java,swing,action,awt,key-bindings,Java,Swing,Action,Awt,Key Bindings,我的目标是定制PrintScreenkey`binding 但是,我需要让我的应用程序脱离焦点才能正常工作。 我正在使用inputmap和actionmap来实现这一点。我使用的参数是组件。当\u在\u聚焦的\u窗口中时。下面给出的是我的代码,但它不工作 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: jButto

我的目标是定制
PrintScreen
key`binding

但是,我需要让我的应用程序脱离焦点才能正常工作。 我正在使用inputmap和actionmap来实现这一点。我使用的参数是
组件。当\u在\u聚焦的\u窗口中时
。下面给出的是我的代码,但它不工作

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    // TODO add your handling code here:
    jButton1.getInputMap().put(KeyStroke
        .getKeyStroke(KeyEvent.VK_PRINTSCREEN,2),"ps");
    jButton1.getActionMap().put("ps",new AbstractAction() {
        public void actionPerformed (ActionEvent e){
            //int i;
            i++;
            System.out.println(i);
        }
     });
}

如果不是键绑定,那么当应用程序未处于焦点时,我如何自定义击键响应?

最高级别的
InputMap
组件。当在聚焦窗口中时,正如它所说,当
组件在聚焦窗口中时,该组件工作。如果您的窗口没有聚焦,您将不会获得任何输入事件


另外,在您的示例中,您没有将参数传递给
getInputMap
,因此您得到的是默认的(
组件。当聚焦
)时。

最高级别的
InputMap
组件。当聚焦窗口中的
组件在聚焦窗口中时,正如它所说的那样,该组件工作。如果您的窗口没有聚焦,您将不会获得任何输入事件


另外,在您的示例中,您没有将参数传递给
getInputMap
,因此您得到的是默认的(
组件。当聚焦时,

),您可能能够利用它,默认情况下它绑定了Enter键。给出了几个完整的例子;另见。比如说,

JButton send = new JButton("Send");
…
f.getRootPane().setDefaultButton(send);

您可能能够利用默认情况下由Enter键绑定的。给出了几个完整的例子;另见。比如说,

JButton send = new JButton("Send");
…
f.getRootPane().setDefaultButton(send);

键绑定只在应用程序有焦点时才起作用。真的不明白为什么,简单的不可能,应用程序的窗口必须在每个本机操作系统的屏幕上有焦点,可能您有两个或更多的JFrames/JDialog,我想你已经更新了你的问题,了解更多关于…如果不是键绑定,那么我如何在应用程序不在焦点时自定义击键响应?不可能(没有本机代码)-应用程序不会从OSKey绑定获得任何击键,只有在应用程序有焦点时才会工作。真的不明白为什么,很简单,不可能,应用程序的窗口必须在每个本机操作系统的屏幕上有一个焦点,也许你有两个或更多的JFrames/JDialog,我想你已经更新了你的问题,了解更多关于…如果没有键绑定,那么当应用程序没有焦点时,我如何自定义击键响应?不可能(没有本机代码)-应用程序不会从操作系统中获得任何按键