在图形输出中添加暂停

Posted

技术标签:

【中文标题】在图形输出中添加暂停【英文标题】:Adding a pause to a graphical output 【发布时间】:2015-07-16 20:46:34 【问题描述】:

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

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

有问题的代码sn-p:

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.");
    

【问题讨论】:

【参考方案1】:

但是,暂停会导致绘图停止。

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

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

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

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

【讨论】:

检查中...如果可以解决问题,我会接受答案。到目前为止谢谢! SwingUtilities.isEventDispatchThread () 每次都出现错误?还是让我试试 Swing Worker…… callDrawingFunction(); canvas.repaint();哦,伙计,谢谢你让我研究线程。

以上是关于在图形输出中添加暂停的主要内容,如果未能解决你的问题,请参考以下文章

(专题四)02 图形的辅助说明

c语言 如何输出以下图形

linux 图形界面下如何看到shell脚本的输出

每日一码——输出花样图形

C语言,编程实现:输出以下图形

c语言 输出以下图形