java - 向图形输出添加暂停

标签 java multithreading swing graphics sleep

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

我想在绘图中暂停一下,这样当项目在搜索过程中改变颜色时就很明显了。但是,暂停会导致绘图停止。有谁知道为什么会这样吗?老实说,我以前从未使用过Thread,也不知道它对运行进程有什么作用。 enter image description here 感谢您的任何想法。

有问题的代码片段:

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/

相关文章:

java - 带扩展名的 ResourceBundle 完全限定名称

java - servlet如何工作?实例化, session ,共享变量和多线程

Java:如何在每个处理器核心上生成多个线程?

multithreading - Node.js 是单线程的,这是否意味着我们不能在不同线程中运行多个 Node.js?

java - 为操作监听器提供字符串质量并在 if 语句中使用这些字符串

java - 如何使用rabbitTemplate receiveAndReply

java - 无法创建 while/boolean 循环

java - 延迟加载模型

java - 使用对话框创建施工单(每次我尝试运行它都会终止)?

java - 如何在 JTable 中按日期对记录进行排序?