`
Eastsun
  • 浏览: 309119 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

JAVA SE6.0 中使用SplashScreen

阅读更多

        在运行一个大型的应用程序,在程序能正式工作前需要一段时间来进行初始化.通常我们会显示一个等待画面直到程序初始化完成.在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 代码
  1. package SplashTest;   
  2.   
  3. import javax.swing.*;   
  4. import java.awt.*;   
  5. import java.awt.image.*;   
  6.   
  7. public class Main{   
  8.     public static void main(String[] args){   
  9.         new Thread(){                                                  //用于运行SplashScreen的线程   
  10.             public void run(){   
  11.                 try{   
  12.                     SplashScreen splash =SplashScreen.getSplashScreen();   
  13.                     Graphics2D g =splash.createGraphics();   
  14.                     g.setColor(Color.red);   
  15.                     g.drawString(splash.getBounds().toString(),10,30);  //SplashScreen在屏幕的位置,大小   
  16.                     g.drawString(splash.getSize().toString(),10,50);    //SplashScreen的大小   
  17.                     g.drawString(splash.getImageURL().toString(),10,70);//当前显示的图片   
  18.                     splash.update();                                    //刷新以上内容到屏幕   
  19.                     Thread.sleep(1000);   
  20.                        
  21.                     //下面的代码是在SplashScreen上显示一个3D效果的字符串   
  22.                     g.setComposite(AlphaComposite.Clear);                                                //1        
  23.                     g.fillRect(0,0,(int)splash.getSize().getWidth(),(int)splash.getSize().getHeight());  //2   
  24.                     splash.setImageURL(Main.class.getResource("/SplashTest/beauty.jpg"));      //更改显示的图片   
  25.                        
  26.                     int x =30, y=100;   
  27.                     String author ="Made By Eastsun";   
  28.                     g.setFont(new Font("TimesRoman", Font.PLAIN, 30));   
  29.                     g.setPaintMode();                                                                    //3   
  30.                     for(int i=0;i<5;i++){   
  31.                         g.setColor(new Color(2002000));   
  32.                         g.drawString(author, x+i, y+i-1);   
  33.                         g.setColor(new Color(1001000));   
  34.                         g.drawString(author, x+i-1, y+i);   
  35.                     }   
  36.                     g.setColor(Color.yellow);   
  37.                     g.drawString(author, x+5, y+5);   
  38.                     splash.update();   
  39.                     Thread.sleep(10000);                                //注意,这儿是sleep(10000),但实际上SplashScreen并没有显示10秒       
  40.                 }catch(Exception e){   
  41.                     e.printStackTrace();   
  42.                 }   
  43.             }   
  44.         }.start();   
  45.            
  46.         try{   
  47.             Thread.sleep(3000);                                         //这儿决定SplashScreen显示时间长短.                                                                
  48.         }catch(Exception e){}                                           //对于实际应用程序,这儿对应程序的初始化工作   
  49.         JFrame frame =new JFrame("Java SE6 Splash Test");   
  50.         frame.setPreferredSize(new Dimension(320,240));   
  51.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
  52.         frame.pack();   
  53.         frame.setVisible(true);   
  54.     }   
  55. }   
  56.   

        程序很简单,没什么好说的.注意的是注释为(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

    在C#中实现SplashScreen(启动屏幕)是一个常见的需求,特别是在开发Windows桌面应用程序时,它可以在应用程序启动初期显示一个简洁的界面,展示品牌信息或进行加载进度提示。与VB.NET不同,C#需要通过手动控制加载...

    Android12 SplashScreen使用案例代码下载

    Android12 SplashScreen使用举例代码下载,运行效果 与 相关API使用介绍请参考博文: Android12适配指南——SplashScreen: https://xiaxl.blog.csdn.net/article/details/123522277 Android 12(API 31)引入了 ...

    VB.NET中实现SplashScreen

    同时,如果需要在SplashScreen中显示加载进度,可以使用ProgressBar控件,并在后台线程中更新进度值。 总之,VB.NET中实现SplashScreen的关键在于创建一个新的线程来显示SplashScreen窗体,并在主窗体加载时控制其...

    C# winform SplashScreen

    在软件开发中,Splash Screen(启动画面)是一种常见的用户界面设计,它通常在应用程序启动时显示,提供一个动态的视觉效果,同时可以展示公司标志、加载进度等信息,提升用户体验。在C# WinForm应用中,创建一个...

    C#闪屏SplashScreen

    在C#编程环境中,"闪屏(SplashScreen)"是一个应用程序启动时首先显示的临时窗口,通常用来展示品牌标识、加载进度或者简单的欢迎信息。它为用户提供了视觉反馈,表明程序正在初始化,增加了用户体验的专业感。本文...

    java splash Screen

    在Java Swing中实现Splash Screen,我们可以利用Java的图形库和事件处理机制来创建自定义的启动界面。 首先,了解Java Swing的基本概念。Swing是Java的一个图形用户界面(GUI)工具包,它是Java Foundation Classes ...

    VC++2010工程中加入SPLASHSCREEN

    在VC++2010开发环境中,为一个工程添加Splash Screen(启动画面)是一项常见的需求,它可以提升应用程序的用户体验,给用户留下专业且有吸引力的第一印象。本文将详细讲解如何在VC++2010工程中实现这个功能。 首先...

    Splash Screen 源码

    这是一个HTML文件,很可能包含了关于如何在Windows Forms应用中使用Splash Screen的教程或参考文档。它可能解释了如何添加和配置Splash Screen,以及如何在C#代码中控制它。 6. **frmSplash.resx**: 这是一个...

    SplashScreen with progressBar 启动画面 进度条 VB VS 2010

    在VB (Visual Basic)开发环境中,使用VS (Visual Studio) 2010创建一个带有进度条的SplashScreen(启动画面)是一项常见的需求,尤其是在应用程序启动时需要进行一些初始化操作时,用户界面的反馈能够提升用户体验。...

    splash screen制作的两种方法

    标题中的“splash screen”指的是应用程序启动时展示的欢迎或加载屏幕,通常包含应用程序的logo、品牌信息等元素,为用户提供视觉反馈,表明程序正在初始化。本文将探讨两种制作splash screen的方法,结合源码和工具...

    WinForm界面开发 SplashScreen源码

    我们在开发应用程序的时候,常常遇到程序启动比较慢,为了提高用户的体验,增加一个闪屏,也就是SplashScreen,这样做的好处有:1、让用户看到加载的过程,提高程序的交互响应;2.可以简短展示或者介绍程序的功能...

    matlab开发-SplashScreen

    `SplashScreen-v1p1`中的`license.txt`可能包含了许可协议的文本,可以使用MATLAB的`text`或`uitextarea`控件来显示。 5. **控制程序流程**:启动屏幕显示完毕后,需要关闭它并启动主程序。MATLAB的`close`函数可以...

    纯C++打造的Splash Screen类(打造专业的启动画面)

    在软件开发中,启动画面(Splash Screen)是用户打开应用程序时首先看到的界面,它通常包含公司的logo、软件名称或一些加载进度。本教程将详细讲解如何使用纯C++语言来创建一个专业的Splash Screen类,使得软件启动...

    使用exe4j 制作java启动程序的 等候界面

    在这个主题中,我们将深入探讨如何利用exe4j创建带有启动等待界面(即 splash screen)的Java应用程序。 首先,我们要理解Java的启动过程通常需要一定时间,特别是在资源加载和初始化阶段。Splash screen在此期间起...

    SplashScreen

    在Winform应用中,SplashScreen的设计和实现是通过C#编程语言和.NET框架完成的。 在Winform程序中,SplashScreen的实现主要有以下步骤: 1. **创建SplashScreen窗口**:首先,我们需要创建一个新的Windows Form,...

    java_splash_window.rar_java -splash_java spla

    下面我们将深入探讨如何使用Java来创建和管理Splash Screen。 首先,理解`-splash`参数:这是Java命令行的一个选项,用于指定应用程序启动时要显示的图像文件。例如,如果你有一个名为`splash.png`的图片文件,你...

    Android代码-SplashScreen

    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

    要在 PhoneGap 项目中使用 Splashscreen,首先需要安装相应的插件。这可以通过命令行工具完成,例如使用 `cordova plugin add cordova-plugin-splashscreen` 命令。安装后,需要在配置文件(如 `config.xml`)中...

    Splash screen控件文件

    本文将深入探讨如何在VC项目中使用Splash screen控件,并详细解释压缩包中的文件`Splash.cpp`和`Splash.h`。 首先,让我们理解`Splash screen`的工作原理。启动画面通常是第一个显示的窗口,它在应用程序实际界面...

    C++ GUI QT 启动画面 SplashScreen

    C++ GUI QT 启动画面 SplashScreen 持续3秒

Global site tag (gtag.js) - Google Analytics