我已经创建了一个处理有向图的程序。我还用一个栅格来显示图形。 (我还在努力清理它,虽然它应该足以显示计算结果。)
我想在图表中暂停一下,因此在搜索过程中项目会改变颜色很明显。但是,暂停会导致图形停止。谁知道为什么会这样?说实话,我之前从未使用过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.");
}
}
答案 0 :(得分:2)
然而,暂停导致图形停止。
听起来你的代码正在Event Dispatch Thread
(EDT)上执行。 EDT是处理GUI上的事件处理的线程。 Thread.sleep()将睡眠EDT,这意味着GUI不能重新绘制自己,直到处理完成。
不要在EDT上使用Thread.sleep()。
相反,您需要创建一个单独的线程。您应该使用Swing Worker
。 Swing Worker将为您创建单独的Thread。您可以在此线程中休眠并发布用于更新GUi的中间结果。
阅读Concurrency上Swing教程中的部分,了解有关Swing Worker的更多信息和示例。