0

默认的关闭快捷方式( Mac 上的Cmd+ q)在我用 java 编写的这个程序上不起作用,你知道为什么吗?

我是一个绝对的初学者,如果你帮助我会很高兴!

编码:

public static void main(String[] args) throws IOException, AWTException{

    final Robot robot = new Robot();

    robot.delay(2000);

    while(true)
    {
        {
        robot.mousePress(InputEvent.BUTTON1_MASK);
        robot.mouseRelease(InputEvent.BUTTON1_MASK);

        robot.delay(50);
        }
    }
}

}
4

1 回答 1

0

那是因为 Java 正试图尽可能地跨平台(或独立于平台)。Key您可以使用之前问题中解释的类(特别是:如何投射键盘事件)制作自己的关闭快捷方式。但是,除非您深入研究 JNI(Java 本机接口),否则我认为您无法检测到特定于 mac 的键,但如果您是初学者,我暂时不推荐它。

例如,假设您希望快捷方式为CTRL+ QKey在您的班级中添加另一个字段:

private boolean ctrlPressed = false;

然后,做一个紧迫的检查:

@Override
public void keyPressed(KeyEvent e)
{
    //Previous code


    if(e.getKeyCode() == KeyEvent.VK_CONTROL)
    {
        ctrlPressed = true;
    }
}

@Override
public void keyReleased(KeyEvent e)
{
    //Previous code


    if(e.getKeyCode() == KeyEvent.VK_CONTROL)
    {
        ctrlPressed = false;
    }
}

最后是 Q 部分:

@Override
public void keyTyped(KeyEvent e)
{
    if(e.getKeyCode() == KeyEvent.VK_Q && ctrlPressed)
    System.exit(0);
}
于 2013-09-11T17:44:41.863 回答