我创建了一个处理有向图的程序。我还用光栅来显示图表。(我仍在努力清理它,尽管它应该足以显示计算结果。)

我想要在图形中暂停,所以当项目在搜索过程中改变颜色时,这是显而易见的。但是,暂停会导致图形停止。有人知道为什么吗?老实说,我以前从未使用过Thread,也不知道它对运行进程有什么作用。

谢谢你的建议。
所讨论的代码片段:
public void showEdge (Raster canvas, Vertex target, Color c) {
[...]
canvas.setLine (x1,y2,x2,y2,c);
try {
Thread.sleep (1000); }
catch (InterruptedException e) {
System.out.println ("Problem with the pause.");
}
}发布于 2015-05-06 15:54:08
但是,暂停会导致图形停止。
听起来您的代码正在Event Dispatch Thread (EDT)上执行。EDT是处理GUI上事件处理的线程。Thread.sleep()将休眠EDT,这意味着在处理完成之前,GUI无法重新绘制自己。
不要在EDT上使用Thread.sleep()。
相反,您需要创建一个单独的线程。您可能应该使用Swing Worker。Swing工作人员将为您创建单独的线程。您可以在此线程中睡眠,并发布中间结果以更新GUi。
有关Swing工作人员的更多信息和示例,请参阅有关并发性的Swing教程中的部分。
https://stackoverflow.com/questions/30081409
复制相似问题