以编程方式创建带文本的SplashScreen的最佳示例

我需要以编程方式创建一个SplashScreen并向其添加文本(并更改它)。 大多数示例使用命令行参数。 有没有解决方案吗?

SwingWorker加载东西时,您可以使用带有背景图像和进度条的未修饰对话框。 完成后,隐藏对话框并像往常一样启动UI。 添加到对话框/闪屏中的组件必须是非透明的才能“看到”背景图像。

这是一个工作示例:

在此处输入图像描述

 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Frame; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JProgressBar; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; public class TestSplashScreen { private JDialog dialog; private JFrame frame; private JProgressBar progress; protected void initUI() throws MalformedURLException { showSplashScreen(); SwingWorker worker = new SwingWorker() { @Override protected Void doInBackground() throws Exception { for (int i = 0; i < 100; i++) { Thread.sleep(100);// Simulate loading publish(i);// Notify progress } return null; } @Override protected void process(List chunks) { progress.setValue(chunks.get(chunks.size() - 1)); } @Override protected void done() { showFrame(); hideSplashScreen(); } }; worker.execute(); } protected void hideSplashScreen() { dialog.setVisible(false); dialog.dispose(); } protected void showSplashScreen() throws MalformedURLException { dialog = new JDialog((Frame) null); dialog.setModal(false); dialog.setUndecorated(true); JLabel background = new JLabel(new ImageIcon(new URL("http://blogs.dirteam.com/photos/sanderberkouwer/images/2157/original.aspx"))); background.setLayout(new BorderLayout()); dialog.add(background); JLabel text = new JLabel("Loading, please wait..."); text.setForeground(Color.WHITE); text.setBorder(BorderFactory.createEmptyBorder(100, 50, 100, 50)); background.add(text); progress = new JProgressBar(); background.add(progress, BorderLayout.SOUTH); dialog.pack(); dialog.setLocationRelativeTo(null); dialog.setVisible(true); } protected void showFrame() { frame = new JFrame(TestSplashScreen.class.getSimpleName()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel ui = new JLabel("UI loaded and ready"); ui.setBorder(BorderFactory.createEmptyBorder(300, 300, 300, 300)); frame.add(ui); frame.pack(); frame.setVisible(true); } public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { new TestSplashScreen().initUI(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } } 

另一种方法是使用SplashScreen API。 有关详细信息,请参见如何创建启动画面 。

我需要以编程方式创建一个SplashScreen并向其添加文本(并更改它)。

根据需要调用SplashScreen.createGraphics()并绘制。