0
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(frame); 此方法在 Main 构造函数中调用。如何在其他类中调用此方法并使其工作?

4

1 回答 1

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,这是非常低的级别,因此可能需要一点努力它才能正常工作。

您还可以查看KeyboardFocusManager ( Java Global JFrame KeyListener )

于 2012-09-05T20:46:13.917 回答