【问题标题】:Making a loading screen in netbeans在 netbeans 中制作加载屏幕
【发布时间】:2013-07-15 22:36:38
【问题描述】:

我创建了一个带有我想要的按钮的 JFrame 类,因此当您按下该按钮时,它将带您进入启动屏幕,而无需打开另一个 JFrame。但是我该怎么做呢?我希望新屏幕中间有一张图片和一个正在加载的 GIF?

【问题讨论】:

    标签: java swing netbeans


    【解决方案1】:

    我喜欢做的是使用SwingWorkerJWindow

    import javax.swing.JFrame;
    import javax.swing.JWindow;
    import javax.swing.SwingUtilities;
    import javax.swing.SwingWorker;
    
    public class Splashscreen {
        JWindow window = new JWindow();
    
        public void start() {
            window.setSize(400, 300);
            // window.pack();
            window.setLocationRelativeTo(null);
            window.setVisible(true);
    
            new StartWorker().execute();
        }
    
        private class StartWorker extends SwingWorker<Void, Void> {
    
            @Override
            protected Void doInBackground() throws Exception {
                // Do background process
                Thread.sleep(2000);
                return null;
            }
    
            @Override
            protected void done() {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                frame.setSize(640, 480);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
                // Dispose window when background process is finished
                window.dispose();
            }
        }
    
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    new Splashscreen().start();
                }
            });
        }
    }
    

    因此,当您实例化Splashscreen 类并调用start 方法时,将显示JWindow 并执行SwingWorkerJWindow 将一直显示,直到后台进程(耗时任务)完成。处理完成后,JFrame 将被显示,JWindow 将被释放。

    但是!在你的情况下,我建议坚持使用 CardLayout,正如 MadProgrammer 在他的回答中所说的那样。

    【讨论】:

      【解决方案2】:

      “我创建了一个带有按钮的 JFrame 类,我想要它,所以当你 按下按钮它将带您进入启动屏幕而无需打开 另一个 JFrame。”

      因此我们可以假设这意味着您希望使用当前的JFrame 显示初始屏幕。

      您可以使用CardLayout 在活动的“屏幕”或“面板”之间切换

      如果您使用的是 gif,最简单的解决方案是通过 ImageIcon 加载图像并使用 JLabel 进行渲染(假设它是动画 gif),否则您可以查看 @987654322 @ 到图像(并通过JLabel 显示它)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-27
        • 1970-01-01
        相关资源
        最近更新 更多