如何更改 KeyListener 在特定事件期间执行的操作

How to change the action performed by KeyListener during a specific event

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

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

仅供快速参考,以下是如何使用 API 绑定单个键:

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

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

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

video 逐步显示如何执行此操作