首页 > 解决方案 > 如何在特定事件期间更改 KeyListener 执行的操作

问题描述

我正在尝试使用 Java Swing 制作一个简单的 RPG 游戏。游戏由键盘使用 Key Listener 控制。问题是我需要在特定事件期间更改“键绑定”,例如在玩家和 NPC 之间的对话期间。假设游戏给了我 3 个对话选择。要选择其中之一,我需要按键盘上的 1、2 或 3。然后在选择其中一个之后对话继续,然后游戏给了我另外 4 个选择。现在我希望能够再次使用 1、2、3 和 4,但它们已被使用,我不知道如何重新绑定它们。

标签: javaswinginputgame-development

解决方案


对此有两种不同的方法。首先,您可以使用 API,例如 Key Bindings API。键绑定允许您在焦点上激活它,而不是在组件上。这篇文章应该完美地回答你的问题。

仅供快速参考,以下是如何将单个密钥与 API 绑定:

myComponent.getInputMap().put("userInput", "myAction");
myComponent.getActionMap().put("myAction", action);

第二种方法涉及扩展 AbstractAction 类。一个例子是:

public class DownAction extends AbtractAction {
    @Override
    public void actionPerformed(ActionEvent e) {
    //code here
    }
}

视频逐步展示了如何执行此操作


推荐阅读