向图形输出添加暂停

Adding a pause to a graphical output

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

我想在图形中暂停一下,这样当项目在搜索过程中改变颜色时就很明显了。但是,暂停会导致绘图停止。有谁知道为什么会这样?老实说,我以前从未使用过 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.

听起来您的代码正在 Event Dispatch Thread (EDT) 上执行。 EDT 是在 GUI 上处理事件处理的 Thread。 Thread.sleep() 将使 EDT 休眠,这意味着 GUI 在处理完成之前无法自行重绘。

不要在 EDT 上使用 Thread.sleep()。

相反,您需要创建一个单独的线程。您可能应该使用 Swing Worker。 Swing Worker 将为您创建单独的线程。您可以在此线程中休眠并发布更新 GUI 的中间结果。

阅读有关 Concurrency 的 Swing 教程部分,了解有关 Swing Worker 的更多信息和示例。