1
我刚刚完成了一个项目,涉及创建一个迷宫和编程三个“机器人”,使用不同的策略穿过它。参与我的实现类是:图形用户界面没有正确更新
- 一个抽象类机器人的三个子类
- 它处理的迷宫
- 一个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上移动的机器人。只有当机器人到达完成时(即go()方法完成时)才更新GUI,此时显示机器人采取的整个路径。
为什么当机器人由main方法创建时,GUI更新正确,但是当它由JFrame类创建时,它不会正确更新?
我不确定你需要看到什么代码来帮助我,所以让我知道你需要看什么。
请出示你的'go'方法和您认为应该把/从视图中删除你的机器人任何部分。 –
你可以发布你的源代码吗?我认为这个问题可能在机器人课上。 –
听起来好像你正在更新机器人在EDT中的位置,可能在某种循环中。阻止事件派发线程的任何操作,同时阻止它分派/处理绘画请求。你还没有提供任何代码,所以我只是猜测 – MadProgrammer