1

我想在 Java 桌面应用程序(我使用 Swing)中实现“等待”预加载消息,就像 Ajax/Flash 开发人员在 Web 应用程序中使用的预加载器一样。

我的应用程序使用客户端/服务器架构,由于服务器的响应时间,从一个窗口移动到另一个窗口时可能会有一些延迟,但是在加载所有内容之前,用户应该无法做任何事情

这样做的最佳做法是什么? 我有两个想法,但我认为应该有更好的方法来处理这个问题:

1个想法)阻塞事件调度程序线程(这甚至可能吗?)

另一种想法)隐藏整个JFrame,直到与服务器的消息交换完成并且内容准备好,显示另一个“等待”JFrame,但我不太喜欢这个解决方案,因为主JFrame会在用户期间保持闪烁开/关相互作用

编辑:感谢一些提示,我想通了,但我不能给任何人答案(实际上没有人回答,我只有评论!),我应该投票删除这个问题吗?

4

1 回答 1

1

我使用 JDialog 解决了这个问题,使用 setVisible(true/false) 并拒绝用户通过按下 X 按钮关闭对话框,使用 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);

public class PreloaderDialog extends JDialog {              

        publicPreloaderDialog() {

                initialize();
        }

        public final void initialize() {

                JLabel waittext = new JLabel("Wait, please");    
                add(waittext);

                setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
                setModalityType(ModalityType.APPLICATION_MODAL);

                setTitle("Loading in progress");

                setLocationRelativeTo(null);
                setSize(300, 120);
        }

        public void hide() {

           setVisible(false);                               
        }

        public void show() {                                       

            setVisible(true);                               
        }

}
于 2012-09-09T19:42:52.257 回答