为什么我的Java KeyListener不能在这种特定情况下工作?

时间:2018-04-11 17:58:22

标签: java keylistener

它甚至不会将键打印到命令提示符。提前谢谢。

这是keylistener的类

public static class KeyWatch extends KeyAdapter implements KeyListener 
        {
            int x;
            int y;

            public KeyWatch(int x, int y)
            {
                x=this.x;
                y=this.y;
            }

            public void keyPressed(KeyEvent e)
            {
                int keyCode = e.getKeyCode();

                if(keyCode==KeyEvent.VK_UP)
                {
                    System.out.println("up");
                    y=y+20;
                }
                if(keyCode==KeyEvent.VK_DOWN)
                {
                    System.out.println("Down");
                    y=y-20;
                }
                if(keyCode==KeyEvent.VK_RIGHT)
                {
                    System.out.println("Right");
                    x=x+20;
                }
                if(keyCode==KeyEvent.VK_LEFT)
                {
                    System.out.println("Left");
                    x=x-20;
                }
            }

            public void keyTyped(KeyEvent e){}

            public void keyReleased(KeyEvent e){}



        }

这里的窗口中的调用脱离了上下文

window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
     KeyWatch watcher = new KeyWatch(x, y);

playerlabel = new JLabel(player);
      playerlabel.addKeyListener(watcher);
      playerlabel.setLocation(x, y);

window.add(playerlabel);

无论如何,重点是将Jlabel移动到窗口周围。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要让标签获得焦点:

playerLabel.requestFocus();

添加密钥监听器后调用此标签,标签已添加到视图层次结构中,并且变为可见。