如何使用JAR文件显示启动画面?
如何使用JAR文件显示启动画面?
嘿,我来分享一个实用的Java启动画面实现方案,打包成JAR后也能正常运行,亲测有效!
下面是完整的示例代码,它用AWT实现了一个带动态加载提示的启动窗口,还包含了主窗口的基础框架:
package misc; import java.awt.*; import java.awt.event.*; public class SplashDemo extends Frame implements ActionListener { // 绘制启动画面的动态内容 static void renderSplashFrame(Graphics2D g, int frame) { final String[] comps = {"foo", "bar", "baz"}; g.setComposite(AlphaComposite.Clear); g.fillRect(120,140,200,40); g.setPaintMode(); g.setColor(Color.BLACK); g.drawString("Loading "+comps[(frame/5)%3]+"...", 120, 150); } public SplashDemo() { super("SplashScreen demo"); setSize(300, 200); setLayout(new BorderLayout()); // 构建菜单 Menu m1 = new Menu("File"); MenuItem mi1 = new MenuItem("Exit"); m1.add(mi1); mi1.addActionListener(this); this.addWindowListener(closeWindow); MenuBar mb = new MenuBar(); setMenuBar(mb); mb.add(m1); // 启动画面核心逻辑 final SplashScreen splash = SplashScreen.getSplashScreen(); if (splash == null) { System.out.println("当前环境不支持SplashScreen"); return; } Graphics2D g = splash.createGraphics(); if (g == null) { System.out.println("无法获取启动画面的绘图上下文"); return; } // 模拟加载过程的动画循环 for(int i=0; i<100; i++) { renderSplashFrame(g, i); splash.update(); try { Thread.sleep(50); } catch(InterruptedException e) { e.printStackTrace(); } } splash.close(); // 加载完成后显示主窗口 setVisible(true); } // 窗口关闭监听器 private WindowListener closeWindow = new WindowAdapter() { public void windowClosing(WindowEvent e) { dispose(); System.exit(0); } }; @Override public void actionPerformed(ActionEvent e) { if(e.getActionCommand().equals("Exit")) { dispose(); System.exit(0); } } public static void main(String[] args) { new SplashDemo(); } }
关键细节说明:
renderSplashFrame方法:负责动态绘制加载提示文本,通过循环切换"foo/bar/baz"来模拟不同组件的加载状态,让启动画面更有动感。SplashScreen类:这是Java官方提供的启动画面API,不需要额外依赖,直接使用即可。如果你的环境不支持它,代码会打印提示并直接进入主窗口。- 加载模拟:通过
Thread.sleep(50)和循环更新画面,模拟真实的程序加载过程,你可以把这段逻辑替换成实际的初始化代码(比如加载配置、初始化服务等)。
打包成JAR的注意事项:
- 如果想用自定义图片作为启动画面:
- 准备一张PNG/JPG格式的图片(比如
splash.png),放在项目根目录。 - 编写
MANIFEST.MF文件,添加一行:SplashScreen-Image: splash.png。
- 准备一张PNG/JPG格式的图片(比如
- 打包命令:
编译代码后,用以下命令打包:jar cvfm YourApp.jar MANIFEST.MF misc/SplashDemo.class splash.png - 运行JAR:
直接执行java -jar YourApp.jar就能看到启动画面啦!
备注:内容来源于stack exchange,提问作者rozerro
相关产品推荐
相关产品推荐

