1

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

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

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

    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 类创建时,不能正确更新?

我不确定您需要查看哪些代码来帮助我解决此问题,因此请告诉我您需要查看的内容。

4

1 回答 1

2

使用 ajavax.swing.Timer来调整动画的速度,如图所示FleetPanel。在每个滴答声中,计时器的侦听器应该只渲染正在运行的机器人。

图片

于 2013-04-03T08:44:58.567 回答