我创建了一个程序来处理有向图。我还使用栅格来显示图表。 (我仍在努力清理它,尽管它应该足以显示计算结果。)
我想在绘图中暂停一下,这样当项目在搜索过程中改变颜色时就很明显了。但是,暂停会导致绘图停止。有谁知道为什么会这样吗?老实说,我以前从未使用过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.");
}
}
最佳答案
However, the pause causes the graphing to stop.
听起来您的代码正在事件调度线程
(EDT) 上执行。 EDT 是处理 GUI 上的事件处理的线程。 Thread.sleep() 将使 EDT hibernate ,这意味着 GUI 在处理完成之前无法重新绘制自身。
不要在 EDT 上使用 Thread.sleep()。
相反,您需要创建一个单独的线程。您可能应该使用 Swing Worker
。 Swing Worker 将为您创建单独的线程。您可以在此线程中 hibernate 并发布更新 GUI 的中间结果。
阅读 Swing 教程中关于 Concurrency 的部分了解 Swing Worker 的更多信息和示例。
关于java - 向图形输出添加暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30081409/