在我的游戏中,我有一个InputHandler类来处理我的动作侦听器。我有它为我的游戏代码的其他部分工作,但由于某种原因,关键监听器不响应我的库存类。 在我的InputHandler类中(它扩展了JPanel):
public InputHandler(InventoryGUI i) {
i.addKeyListener(this);
}
在我的InventoryGUI构造函数中:
this.input = new InputHandler(this);
清单类中的tick方法(Key i在我的InputHandler中正确创建):
if (input.i.isPressed() && canChange) {
canChange = false;
tickCount = 0;
Game.removeInventory();
}
canChange是真的。出于某种原因,输入似乎不起作用。库存屏幕正在滴答作响,但关键监听器没有响应。任何帮助将不胜感激!
编辑:由于这个类是JPanel,我尝试使用KeyBindings,但这仍然没有用。我将其添加到构造函数中:
this.getInputMap().put(KeyStroke.getKeyStroke("I"), "pressed");
this.getActionMap().put("pressed", pressedAction);
在外面创建了pressedAction:
Action pressedAction = new AbstractAction() {
private static final long serialVersionUID = 1L;
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
Game.removeInventory();
}
};
答案 0 :(得分:0)
我实际上是自己找到了解决方案。对于这个蹩脚的问题感到抱歉,因为这是一个焦点问题。我只需要调用requestFocusInWindow()。