java - 双击按键绑定(bind) Java

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

最佳答案

不确定这是否是您想要的

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)

关于java - 双击按键绑定(bind) Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289005/

相关文章:

java - 扫描仪并读取文件

java - 为什么我的 POST 到 Sagepay 会返回错误 400?

java - 将 'markers' 放在 ImageIcon Java Swing 上的最佳方式?

java - 如果我使用 VO 和 DAO,如何在 JTable 中实现数据库搜索?

java - PaintComponent() 函数调用

java - 在屏幕右下角的位置

java - Java中PrintStream的线程安全

java - @scheduled 为 cron 表达式抛出异常

Java 如何防止用户在 FileChooser OpenFileDialog 中编辑文件名

java - 每按一次按钮,框架的关闭和重新打开频率就会增加