InputHandler无法正常工作

时间:2014-12-20 07:30:19

标签: java input key handler keylistener

在我的游戏中,我有一个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();
    }
};

1 个答案:

答案 0 :(得分:0)

我实际上是自己找到了解决方案。对于这个蹩脚的问题感到抱歉,因为这是一个焦点问题。我只需要调用requestFocusInWindow()。