我正在开发 Swing 应用程序,通常一切正常。但我有一个 GUI 问题。
当我运行应用程序时,例如最小化其他一些窗口,我的应用程序仍在工作,但中心部分JFrame
是不可见或隐藏的。在完成程序逻辑的某些部分后,GUI 重新绘制并再次可见。这将一直持续到程序完成运行。
是否有任何 API 可以防止这种行为,或者某些类可以强制 GUI 可见,或者可能添加一些进度条?
如果有人需要此信息,我将在 Windows Vista 上使用 java 1.6 进行测试。
我正在开发 Swing 应用程序,通常一切正常。但我有一个 GUI 问题。
当我运行应用程序时,例如最小化其他一些窗口,我的应用程序仍在工作,但中心部分JFrame
是不可见或隐藏的。在完成程序逻辑的某些部分后,GUI 重新绘制并再次可见。这将一直持续到程序完成运行。
是否有任何 API 可以防止这种行为,或者某些类可以强制 GUI 可见,或者可能添加一些进度条?
如果有人需要此信息,我将在 Windows Vista 上使用 java 1.6 进行测试。
在我看来,您正在执行某种缓慢的 IO 或计算,导致您的 GUI 变得无响应。
您需要做的是在另一个线程中执行长时间运行的进程。
这样做的标准方法是SwingWorker
上课。
Java 教程有一些关于如何正确使用SwingWorker
.
您看到的这种行为是您长时间运行的进程阻塞了 GUI 用来重绘自身的线程的结果。因此,当您的任务正在执行时,GUI 无法重新绘制您的JFrame
并且它变得无响应。
就像 jinguy 说的,你很可能在做一个需要很长时间才能完成的任务,需要放在后台线程中。有关如何正确执行此操作的更多信息,请查看Swing 教程中的 Java Sun并发。
看来您需要在单独的线程中执行长期运行的业务操作。我建议你使用SwingWorker
.
检查这个简单的例子。