在图形输出中添加暂停
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();哦,伙计,谢谢你让我研究线程。以上是关于在图形输出中添加暂停的主要内容,如果未能解决你的问题,请参考以下文章