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,我想你已经更新了你的问题,了解更多关于…如果没有键绑定,那么当应用程序没有焦点时,我如何自定义击键响应?不可能(没有本机代码)-应用程序不会从操作系统中获得任何按键