GUI未正确更新

时间:2013-04-03 03:35:44

标签: java swing

我刚刚完成了一个涉及创建迷宫和编程三个“机器人”的项目,使用不同的策略来完成它。我实现中涉及的类是:

  • 具有三个子类的抽象类Robot
  • 处理迷宫逻辑操作的Maze类
  • 一个JFrame类,以图形方式显示迷宫并显示机器人在其中移动

最后,我有一个主要方法的入口点,它只包含以下内容:

    Maze m = new Maze();
    MazeFrame mf = new MazeFrame(m);
    RightHandRobot mr = new RightHandRobot(m, mf);
    mr.go(m);

这很有效 - 迷宫显示在GUI上,我可以看到机器人穿过它直到他到达终点 - 所需的效果。

我的问题是:在JFrame的顶部是三个按钮,每个按钮都有一个ActionListener,它创建一个机器人类型的实例并调用它的go方法,这会导致它移动直到它完成细胞”。当我单击其中一个按钮时,机器人被创建并开始移动(我可以通过每次移动时执行的println语句进行验证),但我看不到机器人在GUI上移动。 GUI仅在机器人到达结束时(即当go()方法完成时)更新,此时显示机器人所采用的整个路径。

为什么在使用main方法创建机器人时GUI会正确更新,而不是在JFrame类创建机器人时更新?

我不确定您需要看哪些代码来帮助我,所以让我知道您需要看到什么。

1 个答案:

答案 0 :(得分:2)

使用javax.swing.Timer来调整动画的速度,如FleetPanel所示。在每个刻度线上,计时器的监听器应该只渲染正在运行的机器人。

image