Java keylistener和对象的动作,有什么不对?

时间:2010-08-22 18:27:03

标签: java awt keylistener

这是我的代码,我要做的是用按键移动该矩形。问题 - 如何在箭头键上指定它以及为什么它不允许我以这种方式工作?它强调

我的paddle对象在KeyPressed事件中显示为红色,不会运行。

import acm.graphics.*;
import acm.program.*;
import java.awt.event.*;
public class BreakOut extends GraphicsProgram {
/** Runs the program */
public void run() {

 GRect paddle = new GRect(200, 400, 100, 20);
 add(paddle);

 addKeyListeners();

}
public void keyPressed(KeyEvent e){
 paddle.move(5,0);


}

4 个答案:

答案 0 :(得分:0)

paddle是run()方法中的局部变量。无法通过keyPressed(KeyEvent e)方法访问它。

您可能想将划水盘变成一个场地。

答案 1 :(得分:0)

我不知道ACM软件包的内容是什么,我不知道GrphaicsProgram类是什么,所以我真的不知道你在做什么。

但是,通常,KeyEvents仅传递给具有焦点的对象。我不知道你的桨对象是否有焦点。

我建议您使用Swing编写程序,然后使用Key Bindings而不是依赖KeyEvents。

答案 2 :(得分:0)

试试这个:

import acm.graphics.*;
import acm.program.*; 
import java.awt.event.*;

public class BreakOut extends GraphicsProgram {

    GRect paddle;

    public void run() {

      paddle = new GRect(200, 400, 100, 20);
      add(paddle);

      addKeyListeners();

    }

    public void keyPressed(KeyEvent e){
       paddle.move(5,0);
    }

}

答案 3 :(得分:0)

我现在可以看到两个问题:

  1. 你的程序现在有不平衡的花括号,所以你应该在keyPressed方法的末尾添加一个。

  2. 您没有更新矩形,因此您需要某种循环。