-1

与这个问题有些相关。

我有一个内置在ACM 图形库中的游戏。我希望能够在按下P 键时暂停游戏。但是,我查看了文档,似乎简要提到了关键侦听器,但没有在这种情况下使用它们的实际示例(除非我错过了某些东西)。

我不想使用控制台或对话框,因为我不想通过键盘输入数据,我只想能够在我的主游戏循环中使用P 键打开和关闭我的暂停方法。这可能吗?

4

1 回答 1

1

您需要一个子类 ACM 的类Program来添加关键侦听器。其次,您需要一个实现的类KeyListener(这可能是同一个类),然后在KeyListener#keyPressed. 您可以通过获取按下的键的代码KeyEvent.getKeyCode并检查它是否等于您想要的键(在本例中为 P 键)。

下面的例子说明了它是如何工作的。它没有测试它,但它应该可以解决问题。

public class KeyListenerExample extends GraphicsProgram {

    @Override
    public void run() {
        addKeyListeners(new MyKeyListener());
    }

    private class MyKeyListener implements KeyListener {

        @Override
        public void keyPressed(KeyEvent e) {
            int keyCode = e.getKeyCode();
            if (keyCode == KeyEvent.VK_P) {
                System.out.println("Key 'P' has been pressed!");
            }
        }

        @Override
        public void keyReleased(KeyEvent e) { /* Empty body */ }

        @Override
        public void keyTyped(KeyEvent e) { /* Empty body */ }

    }
}

如果您可以为您的问题(尤其是进一步的问题)提供一个最小、完整和可验证的示例,这将很有帮助。

于 2019-04-16T18:31:26.443 回答