我正在开发 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.
检查这个简单的例子。