Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按键不起作用_Java_Keyevent - Fatal编程技术网

Java 按键不起作用

Java 按键不起作用,java,keyevent,Java,Keyevent,上面我附加了部分代码,一个嵌套类。X1是一个全局变量,在构造函数中初始化。用于移动Iamge bhoop的按键不工作。我已经检查了所有的代码,使其正确,但图像是不动的,无论什么。请帮我解决这个问题。如下文所述,我非常感谢您的帮助: 您的面板需要聚焦: class Card31 extends JPanel implements KeyListener, MouseListener { public Card31() { addKeyListener(this);

上面我附加了部分代码,一个嵌套类。X1是一个全局变量,在构造函数中初始化。用于移动Iamge bhoop的按键不工作。我已经检查了所有的代码,使其正确,但图像是不动的,无论什么。请帮我解决这个问题。如下文所述,我非常感谢您的帮助:

您的面板需要聚焦:

 class Card31 extends JPanel implements KeyListener, MouseListener {
     public Card31() {
         addKeyListener(this);
         addMouseListener(this);
         x1 = 700;

     }

     public void keyPressed(KeyEvent e) {

     }

     public void keyReleased(KeyEvent e)

     {

     }

     public void keyTyped(KeyEvent e)

     {

         key = e.getKeyCode();
         if (key == KeyEvent.VK_RIGHT)
             x1 += 10;
         else if (key == KeyEvent.VK_LEFT)
             x1 -= 10;
         repaint();
     }
     public void mouseEntered(MouseEvent e) {
         requestFocus();
     }

     public void mouseExited(MouseEvent e) {}
     public void mousePressed(MouseEvent e) {}
     public void mouseReleased(MouseEvent e) {}

     public void mouseClicked(MouseEvent e) {

     }
     public void mouseClicked(MouseEvent e) {

     }
     public void paintComponent(Graphics g) {
         super.paintComponent(g);
         court2 = Toolkit.getDefaultToolkit().getImage("court2.jpg");
         bhoop = Toolkit.getDefaultToolkit().getImage("bhoop2.png");
         balla = Toolkit.getDefaultToolkit().getImage("balla.png");
         ballc = Toolkit.getDefaultToolkit().getImage("ballc.png");
         balld = Toolkit.getDefaultToolkit().getImage("balld.png");
         balle = Toolkit.getDefaultToolkit().getImage("balle.png");
         ballf = Toolkit.getDefaultToolkit().getImage("ballf.png");
         balli = Toolkit.getDefaultToolkit().getImage("balli.png");
         balll = Toolkit.getDefaultToolkit().getImage("balll.png");
         balln = Toolkit.getDefaultToolkit().getImage("balln.png");
         ballo = Toolkit.getDefaultToolkit().getImage("ballo.png");
         ballr = Toolkit.getDefaultToolkit().getImage("ballr.png");
         balls = Toolkit.getDefaultToolkit().getImage("balls.png");
         ballt = Toolkit.getDefaultToolkit().getImage("ballt.png");
         ballu = Toolkit.getDefaultToolkit().getImage("ballu.png");
         bally = Toolkit.getDefaultToolkit().getImage("bally.png");
         g.drawImage(court2, 0, 0, 1600, 1000, this);
         g.drawImage(ballo, 130, 100, 110, 110, this);
         g.drawImage(ballc, 280, 100, 110, 110, this);
         g.drawImage(balln, 430, 100, 110, 110, this);
         g.drawImage(balld, 580, 100, 110, 110, this);
         g.drawImage(balle, 730, 100, 110, 110, this);
         g.drawImage(ballc, 880, 100, 110, 110, this);
         g.drawImage(balle, 1030, 100, 110, 110, this);
         g.drawImage(ballu, 1180, 100, 110, 110, this);
         g.drawImage(bally, 1330, 100, 110, 110, this);
         g.drawRect(30, 30, 80, 20);
         Font plainfont = new Font("Serif", Font.BOLD, 20);
         g.setFont(plainfont);
         g.setColor(Color.BLACK);
         g.drawString("Score: " + score1, 30, 30);
         g.fillRect(700, 800, 200, 20);
         g.drawImage(bhoop, x1, 500, 150, 150, this);

         g.drawString(msg1, 200, 200);
         System.out.println("x1" + x1);
     }
 }

具有注册的
keystener
的组件必须具有
focus
,才能触发
keystener
。调用组件上的
requestFocus
,请求组件具有焦点,或者更好地使用

Look。正如在许多类似问题中所回答的那样,不要为此使用键侦听器,而是使用键绑定。否则,你就不得不使用让你的JPanel保持焦点的胡言乱语,这是不好的。另外,不要在paintComponent方法中读取所有这些图像,因为这会降低GUI对爬网的响应速度。相反,一次读取图像,比如在构造函数中,然后将图像或图像图标存储在字段中。这是一个可怕的混乱。现在,您必须阻止所有其他组件获得焦点。更好的答案是使用键绑定。
this.setFocusable(true);
this.requestFocusInWindow();