为什么我的Java 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。

任何帮助,不胜感激。

您需要使标签获得焦点:

playerLabel.requestFocus();

在添加密钥侦听器、标签已添加到视图层次结构并变得可见后调用此函数。

最新更新