文档

Java™ 教程
隐藏目录
如何创建启动画面
路径: 使用Swing创建GUI
课程: 使用其他Swing功能

如何创建闪屏

几乎所有现代应用程序都有一个启动画面。通常,启动画面用于以下目的:

Java基础类(包括Swing和抽象窗口工具包(AWT))允许开发人员在Java技术应用程序中创建启动画面。然而,由于启动画面的主要目的是向用户提供有关应用程序启动的反馈,因此应用程序启动和启动画面弹出之间的延迟应尽量小。在启动画面弹出之前,应用程序必须加载和初始化Java虚拟机(JVM)、AWT、Swing,有时还包括应用程序特定的库。几秒钟的延迟使得使用基于Java技术的启动画面变得不太理想。

幸运的是,Java SE 6提供了一种解决方案,允许应用程序在虚拟机启动之前更早地显示启动画面。Java应用程序启动器能够解码图像并在一个简单的非装饰窗口中显示它。

启动画面可以显示任何带有透明度、半透明度和动画的gifpngjpeg图像。下图是一个以动画gif文件开发的Java应用程序启动画面的示例。

Java应用程序启动画面

SplashScreen类用于关闭启动画面、更改启动画面图像、获取图像位置或大小,并在启动画面中绘制。应用程序无法创建此类的实例。只能存在一个在该类内部创建的单一实例,并且可以使用getSplashScreen()静态方法获取此实例。如果应用程序没有通过命令行或清单文件选项在启动时创建启动画面,则getSplashScreen方法返回null。

通常,开发人员希望将启动画面图像保持在屏幕上,并在图像上显示其他内容。启动画面窗口具有一个带有alpha通道的覆盖层,并且可以使用传统的Graphics2D接口访问此层。

以下代码片段展示了如何获取SplashScreen对象,然后使用createGraphics()方法创建一个图形上下文:

...
        final SplashScreen splash = SplashScreen.getSplashScreen();
        if (splash == null) {
            System.out.println("SplashScreen.getSplashScreen()返回null");
            return;
        }
        Graphics2D g = splash.createGraphics();
        if (g == null) {
            System.out.println("g是null");
            return;
        }
...

SplashDemo.java文件中可以找到演示的完整代码。


注意: 

SplashDemo应用程序使用固定坐标来显示叠加信息。这些坐标是与图像相关的,并且针对每个启动画面单独计算。


本机启动画面可以通过以下方式显示:

如何使用命令行参数显示启动画面

使用-splash:命令行参数来从命令行显示启动画面。该参数是Java应用程序启动器选项,用于显示启动画面:

java -splash:<文件名> <类名>

试一试: 
  1. SplashDemo.java文件保存在名为misc的目录中。
  2. 按照以下方式编译文件:
    javac misc/SplashDemo.java
    
  3. splash.gif图像保存在images目录中。
  4. 使用以下参数从命令行运行应用程序:
    java -splash:images/splash.gif misc.SplashDemo
    
  5. 等待启动画面完全显示。
  6. 应用程序窗口出现。要关闭窗口,请从弹出菜单中选择File|Exit或点击X。
  7. 将启动画面名称更改为不存在的图像,例如nnn.gif。使用以下方式运行应用程序:
    java -splash:images/nnn.gif misc.SplashDemo
    
  8. 你将看到以下输出字符串:
    SplashScreen.getSplashScreen()返回null
    

如何使用JAR文件显示启动画面

如果您的应用程序打包在JAR文件中,可以使用清单文件中的SplashScreen-Image选项显示启动画面。将图像放在JAR文件中,并在选项中指定路径,如下所示:

Manifest-Version: 1.0
Main-Class: <类名>
SplashScreen-Image: <图片名>

试一试: 
  1. SplashDemo.java文件保存在名为misc的目录中。
  2. 编译文件如下:
    javac misc/SplashDemo.java
    
  3. splash.gif图像保存在images目录中。
  4. 准备splashmanifest.mf文件如下:
    Manifest-Version: 1.0
    Main-Class: misc.SplashDemo
    SplashScreen-Image: images/splash.gif
    
  5. 使用以下命令创建JAR文件:
    jar cmf splashmanifest.mf splashDemo.jar misc/SplashDemo*.class images/splash.gif
    
    有关JAR文件的更多信息,请参阅使用JAR文件页面中的将程序打包为JAR文件
  6. 运行应用程序:
    java -jar splashDemo.jar
    
  7. 等待直到启动画面完全显示。
  8. 应用程序窗口出现。要关闭窗口,请从弹出菜单中选择文件|退出,或单击X。

启动画面API

SplashScreen类无法用于创建启动画面,只能存在一个在该类内创建的实例。

方法 用途
getSplashScreen() 返回用于控制Java启动画面的SplashScreen对象。
createGraphics() 为启动画面覆盖图像创建一个图形上下文(作为Graphics2D对象),允许您在启动画面上绘图。
getBounds() 返回启动画面窗口的边界作为Rectangle
close() 关闭启动画面并释放所有关联的资源。

使用 SplashScreen API 的示例

下表列出了使用启动画面的示例。

示例 所在位置 注释
SplashDemo 本节 在打开应用程序窗口之前显示一个启动画面。

上一页: 如何打印文本
下一页: 如何使用系统托盘