【发布时间】:2023-03-26 09:03:01
【问题描述】:
我想在 Java 桌面应用程序(我使用 Swing)中实现“等待”预加载消息,就像 Ajax/Flash 开发人员在 Web 应用程序中使用的预加载器一样。
我的应用程序使用客户端/服务器架构,从一个窗口移动到另一个窗口时可能会有一些延迟,因为服务器的响应时间,但是用户应该不能做任何事情,直到所有内容已加载。
这样做的最佳做法是什么? 我有两个想法,但我认为应该有更好的方法来处理这个问题:
1 个想法)阻塞 Event Dispatcher 线程(这可能吗?)
另一种想法)隐藏整个JFrame,直到与服务器的消息交换完成并且内容准备好,显示另一个“等待”JFrame,但我不太喜欢这种解决方案,因为主JFrame会一直闪烁开/关在用户交互期间
编辑:感谢一些提示,我想通了,但我不能给任何人答案(实际上没有人回答,我只有 cmets!),我应该投票删除这个问题吗?
【问题讨论】:
-
(block EDT) " (这可能吗?)" 容易,但不要。改为显示模式对话框。
-
@AndrewThompson 但是对于模态对话框,如果 JFrame 仍然显示在背景上,用户可以单击某处,从而弄乱应用程序逻辑(我知道,它不是很健壮,但它应该很简单)
-
" 用户可以点击某处," 他们可以点击任何他们喜欢的地方。他们可以单击对话框以将其和应用程序带入。到前面,或单击框架中的任意位置以听到一个愉快的小“叮”声,上面写着“不要单击此”。
-
是的,就像@AndrewThompson 建议的那样,只要框架(在后台)没有准备好,就显示
JDialog是你最好的选择。在那之前不要让用户关闭对话框。 -
这是处理不确定延迟的最小example。您可以answer your own question 或编辑您的问题以包含sscce。
标签: java swing splash-screen preloader