java - 在 netbeans 中制作加载屏幕

标签 java swing netbeans

我创建了一个带有按钮的 JFrame 类,我想要它,所以当您按下按钮时,它会带您进入初始屏幕,而无需打开另一个 JFrame。但是我该怎么做呢?我希望新屏幕在中间显示图像和正在加载 GIF 吗?

最佳答案

我喜欢做的是使用 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,正如 MadProgrammer 在他的回答中所述。

关于java - 在 netbeans 中制作加载屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17665089/

相关文章:

Java读取没有前缀但在命名空间范围内的xml元素

java - 跟踪 Swing 组件的正确方法是什么?

java - 在哪里可以找到 jdatepicker jar 文件?

java - 如何将变量设置为等于用户在 JDialog 中输入的内容?

java - 创建 LDAP 领域时出现 Glassfish 错误 : "Invalid property syntax, "="in value

java - 添加新行后 JTable 不显示新模型

java - ADMA5014E 将 Mavenized Java 应用程序安装到 WebSphere 时出错,并出现 NoModuleFileException : "A file does not exist for module element having uri"

java - 条件绑定(bind)

java - 如何使用 HibernateTemplate.findByNamedParam()?

c++ - linux c++ netbeans 7.4 opengl 问题