我有一个Java程序,其中启动了一个操作,它循环遍历项目列表,对数据进行一些计算以及各种其他任务。这个过程大约需要10分钟,但我希望在完成该项目的处理时输出列表中每个项目的结果。输出是写入表格中单元格的一组项目。 还有一个进度条,在整个操作完成之前不会更新。
尽管在循环遍历项目列表期间调用了输出语句,但所有输出似乎都排队,并且只在整个操作结束后输出。
我已经看过其他语言的刷新程序来解决这个问题。 Java是否允许这样的刷新?
提前感谢您提供任何帮助。
答案 0 :(得分:3)
是的,Java确实允许在长时间运行的进程中更新GUI。对于某些背景,请查看concurrency in Swing和SwingWorker类的概念。
输出是写入表格中单元格的一组项目。还有一个进度条,在整个操作完成之前不会更新。
您没有更新小部件的原因很可能是您在单独的Swing绘制线程中执行长时间运行的过程。这将阻止您的GUI更新,直到该过程结束。
要获得更准确的诊断,请发布一些代码。
答案 1 :(得分:1)
您可以关闭worker threads来执行各种处理。
答案 2 :(得分:0)
使用System.out.flush();
撰写邮件后尝试System.out.println();
。这会将流刷新到屏幕。