双击键盘绑定Java

问题描述:

public void fullscreenKey(final JFrame frame) 
{ 
    k = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0); 
    getInputMap(WHEN_IN_FOCUSED_WINDOW).put(k, k.toString()); 
    getActionMap().put(k.toString(), new AbstractAction() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      fullscreen(!f1, frame); 
      f1 = !f1; 
     } 
    }); 
} 

每当我将此方法调用到其他类中时,什么都不会发生。由于getInputMap和getActionMap,我不能使这个方法是静态的。我使用Main main = new Main(); main.fullscreenKey(帧);这个方法在Main构造函数中被调用。我如何在其他类中调用此方法并使其工作?双击键盘绑定Java

+0

只是要getInputMap中和getActionMap静态的呢? –

+1

@JeffLaJoie'getInputMap'和'getActionMap'是'JComponent'的方法,它们是[Swing key bindings API]的一部分(http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html ),他不能让他们静态 – MadProgrammer

不知道这是否是你追求的还是不

public void fullscreenKey(JComponent comp, final JFrame frame) 
{ 
    k = KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0); 
    comp.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(k, k.toString()); 
    comp.getActionMap().put(k.toString(), new AbstractAction() 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      fullscreen(!f1, frame); 
      f1 = !f1; 
     } 
    }); 
} 

如果你正在寻找一个“全局”键,而不是处理程序(即要处理击键随时在您的应用程序),你可以看看Toolkit.addAWTEventListener,这是非常低的水平,所以它可能需要一点努力才能正常工作。

你也可以看看KeyboardFocusManagerJava Global JFrame KeyListener

+0

谢谢!这是完美的。我无法使用这个。在静态方法中,但将其作为arg是我从未想到的。至于链接,我会研究这些。我认为一个共享的方法会起同样的作用。 – Coupon22