Swing应用问题

发布于 2024-07-25 00:24:02 字数 270 浏览 4 评论 0原文

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

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

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

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

I'm developing Swing application, and everything works fine usually. But I have an GUI issue.

When I run the application, and for example minimize some other window, my application is still working, but the central part of JFrame is invisible or hidden. After finishing some part of program logic the GUI repaints and is visible again. This will continue until the program finishes running.

Is there any API for preventing this behavior, or some class for forcing the GUI visible, or maybe to add some progress bar?

If someone need this information I'm testing this on Windows Vista, with java 1.6.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

薄荷→糖丶微凉 2024-08-01 00:24:02

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

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

标准方法是使用 SwingWorker 类。

Java 教程 有一些很棒的资源和教程,介绍如何正确使用使用SwingWorker。

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

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

It sounds to me like you are doing some sort of slow IO or calculations that are causing your GUI to become unresponsive.

What you need to do is do the long running processes in another thread.

The standard way of doing that is with a SwingWorker class.

The Java tutorials have some great resources and tutorials on how to properly use the SwingWorker.

Here and here is a link to another question that I believe may be similar.

This behavior you are seeing is a result of your long running process blocking the thread that the GUI uses to repaint itself. Thus, while your task is performing, the GUI is unable to repaint your JFrame and it becomes unresponsive.

Bonjour°[大白 2024-08-01 00:24:02

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

Just like jinguy says you are most likely doing a task that takes a long time to complete and needs to be put in a background thread. Have a look at the Java Sun Concurrency in Swing Tutorial for more information on how to do this correctly.

卷耳 2024-08-01 00:24:02

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

检查这个简单的示例

It seems you need to perform your long running business operations in a separate thread. I suggest you use a SwingWorker.

Check this simple example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文