3

我正在开发 Swing 应用程序,通常一切正常。但我有一个 GUI 问题。

当我运行应用程序时,例如最小化其他一些窗口,我的应用程序仍在工作,但中心部分JFrame是不可见或隐藏的。在完成程序逻辑的某些部分后,GUI 重新绘制并再次可见。这将一直持续到程序完成运行。

是否有任何 API 可以防止这种行为,或者某些类可以强制 GUI 可见,或者可能添加一些进度条?

如果有人需要此信息,我将在 Windows Vista 上使用 java 1.6 进行测试。

4

3 回答 3

9

在我看来,您正在执行某种缓慢的 IO 或计算,导致您的 GUI 变得无响应。

您需要做的是在另一个线程中执行长时间运行的进程。

这样做的标准方法是SwingWorker上课。

Java 教程有一些关于如何正确使用SwingWorker.

这里这里是另一个我认为可能相似的问题的链接。

您看到的这种行为是您长时间运行的进程阻塞了 GUI 用来重绘自身的线程的结果。因此,当您的任务正在执行时,GUI 无法重新绘制您的JFrame并且它变得无响应。

于 2009-06-25T12:44:31.500 回答
2

就像 jinguy 说的,你很可能在做一个需要很长时间才能完成的任务,需要放在后台线程中。有关如何正确执行此操作的更多信息,请查看Swing 教程中的 Java Sun并发。

于 2009-06-25T12:47:57.220 回答
2

看来您需要在单独的线程中执行长期运行的业务操作。我建议你使用SwingWorker.

检查这个简单的例子

于 2009-06-25T12:48:08.997 回答