我的java应用程序的动态启动屏幕

我的java应用程序的动态启动屏幕,java,splash-screen,Java,Splash Screen,我想为我的Java应用程序创建一个启动屏幕。我使用NetBeans默认工具实现了这一点,该工具允许我在其中放入一些图像。但是我想在那里有一些“实时”的东西,比如一个显示应用程序加载状态的进度条,一些动态文本,等等 我该怎么做?要开始做类似的事情,我需要知道哪些事情?下面是Java教程,它将带您了解您想要做的事情。您可以在命令行上设置图像,使其立即显示,然后可以在JVM初始化后对其进行操作,以添加文本、进度条等 诀窍是使用swing创建初始屏幕,然后使用Java反射调用加载应用程序的另一个.Jav

我想为我的Java应用程序创建一个启动屏幕。我使用NetBeans默认工具实现了这一点,该工具允许我在其中放入一些图像。但是我想在那里有一些“实时”的东西,比如一个显示应用程序加载状态的进度条,一些动态文本,等等


我该怎么做?要开始做类似的事情,我需要知道哪些事情?

下面是Java教程,它将带您了解您想要做的事情。您可以在命令行上设置图像,使其立即显示,然后可以在JVM初始化后对其进行操作,以添加文本、进度条等


诀窍是使用swing创建初始屏幕,然后使用Java反射调用加载应用程序的另一个.Java文件中的方法。加载完成后,处理您的启动屏幕

检查代码后,您将了解它是如何工作的,现在您可以用自己的方式自定义它

下面是一些代码:

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JDialog;

/**
 *
 * @author martijn
 */
public class Splash {

    public static void splash() {
        try {
            final BufferedImage img = ImageIO.read(Splash.class.getResourceAsStream("/path/to/your/splash/image/splash.png"));
            JDialog dialog = new JDialog() {

                @Override
                public void paint(Graphics g) {
                    g.drawImage(img, 0, 0, null);
                }
            };
            // use the same size as your image
            dialog.setPreferredSize(new Dimension(450, 300)); 
            dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
            dialog.setUndecorated(true);
            dialog.pack();
            dialog.setLocationRelativeTo(null);
            dialog.setVisible(true);
            dialog.repaint();
            try {
                // Now, we are going to init the look and feel:

                Class uim = Class.forName("javax.swing.UIManager");
                uim.getDeclaredMethod("setLookAndFeel", String.class).invoke(null, (String) uim.getDeclaredMethod("getSystemLookAndFeelClassName").invoke(null));

                // And now, we are going to invoke our loader method:
                Class clazz = Class.forName("yourpackage.YourClass");
                dialog.dispose();
                // suppose your method is called init and is static
                clazz.getDeclaredMethod("init").invoke(null);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            dialog.dispose();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}