2013-06-22 25 views
0

我正在用GUI构建一个带有Java的小软件。 我有一个连续运行的算法(几乎24/7)(我在GUI中有一个停止/启动按钮) 这个算法应该更新一个列表并在GUI上显示一个日志。 问题是 - 我应该为此过程创建一个单独的类或线程(算法), 1)如果答案是肯定的 - 我应该将GUI元素作为参数传输给该过程吗?它会导致更新GUI的问题吗? 2)如果不是 - 我应该如何设计它?设计问题 - 应该使用单独的GUI线程?

非常感谢提前!

+0

你在使用(framework/lib)在应用程序中构建ui是什么? –

回答

3

你应该使用重任务SwingWorker,是专为这种情况而设计的。这里有一篇不错的文章why do we need SwingWorker?。 你需要这个原因,如果你的算法需要例如5秒,你运行在与gui相同的线程中,它会冻结你的视图直到完成。

顺便说一句,所有的gui组件都必须在Event Dispatch Thread中更新,所以你不必在另一个线程中更新它们,因为它们不会被更新。

1

是 - 我应该为此创造 程序(算法)一个单独的类或线程的问题,

是的,这是一种常见的做法是这样做的。

我应该将GUI元素作为参数 更新为该过程吗?它会导致更新GUI的问题吗?

你并不需要传递任何东西。唯一需要确定的是与ui元素的所有交互都是在ui线程内完成的(以避免并发问题)。通常这是通过创建runnable来完成的,该runnable执行与UI相关的工作,并将其传递给您正在使用的UI框架以在UI线程中进行调度。