在运行一个大型的应用程序,在程序能正式工作前需要一段时间来进行初始化.通常我们会显示一个等待画面直到程序初始化完成.在JAVA SE6中提供了一个SplashScreen类让我们能够很方便的实现这个功能.
SplashScreen类能够在启动程序时在屏幕中央显示一张预先指定的图片或动画(gif),并且在第一个AWT/SWING窗口显示时自动关闭(当然你也可以在这期间自行关闭).使用SplashScreen的最简单的方法不需要写任何代码,只要在运行程序时在命令行加一个参数-splash:imageFile就可以了,比如 java -splash:splash.gif myApp(如果是jar文件:java -splash:splash:splash.gif -jar myApp.jar).是不是很方便啊.
不过更多的时候我们发布程序时使用的是jar文件,另一方面用户使用时也不会要求他自己会在命令行上加上 -splash参数.所以更常用的方式是在jar包的配置文件里加一行:SplashScreen-Image: splashFileName,象这样:
Manifest-Version: 1.0
Author: Eastsun
Created-By: 1.6.0-beta2 (Sun Microsystems Inc.)
SplashScreen-Image: splash.png
Main-Class: TestSplash
这种简单的使用在大多时候已经足用了,不过有时我们希望把欢迎界面做的更完美一些,比如在上面动态显示出当前初始化的进度,或者在上面显示一个动画之类的,这时就需要我们使用SplashScreen提供的一些方法了.下面我们用一个简单的示例来说明SplashScreen的使用.
java 代码
- package SplashTest;
-
- import javax.swing.*;
- import java.awt.*;
- import java.awt.image.*;
-
- public class Main{
- public static void main(String[] args){
- new Thread(){
- public void run(){
- try{
- SplashScreen splash =SplashScreen.getSplashScreen();
- Graphics2D g =splash.createGraphics();
- g.setColor(Color.red);
- g.drawString(splash.getBounds().toString(),10,30);
- g.drawString(splash.getSize().toString(),10,50);
- g.drawString(splash.getImageURL().toString(),10,70);
- splash.update();
- Thread.sleep(1000);
-
-
- g.setComposite(AlphaComposite.Clear);
- g.fillRect(0,0,(int)splash.getSize().getWidth(),(int)splash.getSize().getHeight());
- splash.setImageURL(Main.class.getResource("/SplashTest/beauty.jpg"));
-
- int x =30, y=100;
- String author ="Made By Eastsun";
- g.setFont(new Font("TimesRoman", Font.PLAIN, 30));
- g.setPaintMode();
- for(int i=0;i<5;i++){
- g.setColor(new Color(200, 200, 0));
- g.drawString(author, x+i, y+i-1);
- g.setColor(new Color(100, 100, 0));
- g.drawString(author, x+i-1, y+i);
- }
- g.setColor(Color.yellow);
- g.drawString(author, x+5, y+5);
- splash.update();
- Thread.sleep(10000);
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- }.start();
-
- try{
- Thread.sleep(3000);
- }catch(Exception e){}
- JFrame frame =new JFrame("Java SE6 Splash Test");
- frame.setPreferredSize(new Dimension(320,240));
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.pack();
- frame.setVisible(true);
- }
- }
-
程序很简单,没什么好说的.注意的是注释为(1,2,3)的三条语句起的作用是把第一次画的那些字符串清除掉.
嗯,这儿简单说明下原理:SplashScreen实际上可以分为两层,一层是你指定的那个Image图象(也可以由SplashScreen.setImageURL(URL)来指定),它一开始就显示出来;另一层是个BufferedImage,由SplanshScreen.createGraphics得到的Graphics2D对象实际上调用的是BufferedImage.createGraphics(),所以操作g做的图都在这个BufferedImage上,当调用SplashScreen.update()的时候,就会使用AlphaComposite.SrcOver规则将BufferedImage绘制到Image上去.所以当使用setImageURL()去换了图象之后,你会发现即使什么也不画,调用update也会把之前画的图形显现出来.
晤,还有几点注意的地方:
1.SplashScreen不能使用构造函数来实例化,只能通过静态方法getSplashScreen()来获得SplashScreen对象
2.在获的SplashScreen对象的时候必须保证你已经以某种方式(命令行或在jar里的配置文件中)指定了一副图像作为启动画面,否则getSplashScreen返回的是个null.
- 源代码.rar (25.5 KB)
- 描述: 本文源代码
- 下载次数: 428
分享到:
相关推荐
在C#中实现SplashScreen(启动屏幕)是一个常见的需求,特别是在开发Windows桌面应用程序时,它可以在应用程序启动初期显示一个简洁的界面,展示品牌信息或进行加载进度提示。与VB.NET不同,C#需要通过手动控制加载...
Android12 SplashScreen使用举例代码下载,运行效果 与 相关API使用介绍请参考博文: Android12适配指南——SplashScreen: https://xiaxl.blog.csdn.net/article/details/123522277 Android 12(API 31)引入了 ...
同时,如果需要在SplashScreen中显示加载进度,可以使用ProgressBar控件,并在后台线程中更新进度值。 总之,VB.NET中实现SplashScreen的关键在于创建一个新的线程来显示SplashScreen窗体,并在主窗体加载时控制其...
在软件开发中,Splash Screen(启动画面)是一种常见的用户界面设计,它通常在应用程序启动时显示,提供一个动态的视觉效果,同时可以展示公司标志、加载进度等信息,提升用户体验。在C# WinForm应用中,创建一个...
在C#编程环境中,"闪屏(SplashScreen)"是一个应用程序启动时首先显示的临时窗口,通常用来展示品牌标识、加载进度或者简单的欢迎信息。它为用户提供了视觉反馈,表明程序正在初始化,增加了用户体验的专业感。本文...
在Java Swing中实现Splash Screen,我们可以利用Java的图形库和事件处理机制来创建自定义的启动界面。 首先,了解Java Swing的基本概念。Swing是Java的一个图形用户界面(GUI)工具包,它是Java Foundation Classes ...
在VC++2010开发环境中,为一个工程添加Splash Screen(启动画面)是一项常见的需求,它可以提升应用程序的用户体验,给用户留下专业且有吸引力的第一印象。本文将详细讲解如何在VC++2010工程中实现这个功能。 首先...
这是一个HTML文件,很可能包含了关于如何在Windows Forms应用中使用Splash Screen的教程或参考文档。它可能解释了如何添加和配置Splash Screen,以及如何在C#代码中控制它。 6. **frmSplash.resx**: 这是一个...
在VB (Visual Basic)开发环境中,使用VS (Visual Studio) 2010创建一个带有进度条的SplashScreen(启动画面)是一项常见的需求,尤其是在应用程序启动时需要进行一些初始化操作时,用户界面的反馈能够提升用户体验。...
标题中的“splash screen”指的是应用程序启动时展示的欢迎或加载屏幕,通常包含应用程序的logo、品牌信息等元素,为用户提供视觉反馈,表明程序正在初始化。本文将探讨两种制作splash screen的方法,结合源码和工具...
我们在开发应用程序的时候,常常遇到程序启动比较慢,为了提高用户的体验,增加一个闪屏,也就是SplashScreen,这样做的好处有:1、让用户看到加载的过程,提高程序的交互响应;2.可以简短展示或者介绍程序的功能...
`SplashScreen-v1p1`中的`license.txt`可能包含了许可协议的文本,可以使用MATLAB的`text`或`uitextarea`控件来显示。 5. **控制程序流程**:启动屏幕显示完毕后,需要关闭它并启动主程序。MATLAB的`close`函数可以...
在软件开发中,启动画面(Splash Screen)是用户打开应用程序时首先看到的界面,它通常包含公司的logo、软件名称或一些加载进度。本教程将详细讲解如何使用纯C++语言来创建一个专业的Splash Screen类,使得软件启动...
在这个主题中,我们将深入探讨如何利用exe4j创建带有启动等待界面(即 splash screen)的Java应用程序。 首先,我们要理解Java的启动过程通常需要一定时间,特别是在资源加载和初始化阶段。Splash screen在此期间起...
在Winform应用中,SplashScreen的设计和实现是通过C#编程语言和.NET框架完成的。 在Winform程序中,SplashScreen的实现主要有以下步骤: 1. **创建SplashScreen窗口**:首先,我们需要创建一个新的Windows Form,...
下面我们将深入探讨如何使用Java来创建和管理Splash Screen。 首先,理解`-splash`参数:这是Java命令行的一个选项,用于指定应用程序启动时要显示的图像文件。例如,如果你有一个名为`splash.png`的图片文件,你...
Android SplashScreen Android library for getting a nice and simple SlashScreen into your Android app. Installation Up to now, the library is only available in JitPack. Please add this code to your...
要在 PhoneGap 项目中使用 Splashscreen,首先需要安装相应的插件。这可以通过命令行工具完成,例如使用 `cordova plugin add cordova-plugin-splashscreen` 命令。安装后,需要在配置文件(如 `config.xml`)中...
本文将深入探讨如何在VC项目中使用Splash screen控件,并详细解释压缩包中的文件`Splash.cpp`和`Splash.h`。 首先,让我们理解`Splash screen`的工作原理。启动画面通常是第一个显示的窗口,它在应用程序实际界面...
C++ GUI QT 启动画面 SplashScreen 持续3秒