双击键绑定Java

时间:2012-09-05 20:10:35

标签: java swing jframe fullscreen key-bindings

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构造函数中调用此方法。如何在其他类中调用此方法并使其有效?

1 个答案:

答案 0 :(得分:1)

不确定这是否是您所追求的

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