在netbeans中制作加载屏幕

时间:2013-07-15 22:36:38

标签: java swing netbeans

我创建了一个带有我想要的按钮的JFrame类,所以当你按下按钮时,它会带你进入启动画面而不打开另一个JFrame。但是我该怎么做?我希望新屏幕中间有图像和加载GIF?

2 个答案:

答案 0 :(得分:3)

我喜欢做的是使用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时,将会显示SwingWorker并执行JWindow。将显示JFrame,直到后台进程(耗时的任务)完成。完成流程后,系统会显示JWindow,并会处理CardLayout

但是!在你的情况下,我建议坚持使用{{1}}作为MadProgrammer在他的回答中说明。

答案 1 :(得分:2)

  

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

因此我们可以假设这意味着您希望使用当前的JFrame显示启动画面。

您可以使用CardLayout在有效“屏幕”或“面板”之间切换

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