我有一个带有一些图像的图形用户界面。按下按钮后,我更改此图像并重新绘制整个图形用户界面。这工作得很好。
为了向您展示我在这里所做的一个小型可视化。我有 8 张图片:
1. 2. 3. 4.
5. 6. 7. 8.
在我按下按钮后,所有图像都向左旋转步骤:
2. 3. 4. 8.
1. 5. 6. 7.
3. 4. 8. 7.
2. 1. 5. 6.
4. 8. 7. 6.
3. 2. 1. 5.
好的,我们到了。正如我已经提到的,这很好用!在每一步之后,我都会重新绘制图形用户界面,但当然这发生得如此之快,以至于您看不到开始和结束之间的步骤。你只看到原点:
1. 2. 3. 4.
5. 6. 7. 8.
最后的转变
4. 8. 7. 6.
3. 2. 1. 5.
但实际上我希望用户看到每一步。所以我想我可以在每个步骤之后添加一个 Thread.sleep() 但这会冻结图形用户界面(我发现的事件调度程序线程的东西)
所以我试图把所有东西都放进去:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
changeGUI();
try {
Thread.sleep(1000);
} catch(InterruptedException e) {}
}
}
但有了它,什么都没有改变。它仍然非常快,我只看到了起源和最后的转变。
调用重绘我的所有摆动组件的方法称为“changeGUI()”
那么我如何才能真正实现在一定时间后重新绘制的功能呢?
- 起源
- 等一下
- 第一次转型
- 等一下
- ……