如何正确检查关键事件?

时间:2015-01-08 23:25:20

标签: java swing keyevent

我有一个游戏,我想用wasd按钮控制播放器。我写了一个keylistener来监视击键,但总是只有一次。玩家moced后,我必须用鼠标点击桌子上的其他按键。

以下是听众:

 buttons[i][j].addKeyListener(new KeyListener() {

                @Override
                public void keyTyped(KeyEvent e) {

                }

                @Override
                public void keyPressed(KeyEvent e) {
                    switch(e.getKeyChar()){
                        case 'a':
                            action(x,y-1);
                            break;
                        case 'w':
                            action(x-1,y);
                            break;
                        case 'd':
                            action(x,y+1);
                            break;
                        case 's':
                            action(x+1,y);
                            break;
                    }
                }

                @Override
                public void keyReleased(KeyEvent e) {
                }
            });

其中buttons是2维JButton数组。我不知道这是足够的信息,但请告诉我,如果需要更多代码(动作是移动功能)。

编辑:我有另一个侦听器,它会检查鼠标。我必须单击鼠标,然后我可以使用键一次(我必须重复这个)。这是另一个听众:

buttons[i][j].addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    if(model.getField(x, y)){
                        boolean corrpos=(model.latottOnMarCsirket(model.getPlayerPosX(), model.getPlayerPosY()+1) ||(model.latottOnMarCsirket(model.getPlayerPosX()-1, model.getPlayerPosY())));
                        model.setPosition(x, y);
                        refresh();
                        if(model.latottOnMarCsirket(x, y) && corrpos){
                            JOptionPane.showMessageDialog(null, "Nyert");
                            dispose();
                        }
                    }
                }
            });

0 个答案:

没有答案