在应用程序启动的时候,如果初始化的时间较长,通常需要安排一个表示欢迎使用本程序的启动界面,在初始化完成后该界面自动消失,这就是平时所说的Splash Window(快闪窗口)。
/************************************************
* 程序文件名称:JSplashWindow.java
* 功能:程序启动界面
***********************************************/
import javax.swing.*;
import java.awt.*;
import java.net.*;
public class JSplashWindow extends JWindow implements Runnable{
Thread splashThread = null;
public JSplashWindow(){
JPanel splash = new JPanel(new BorderLayout());
URL url=getClass().getResource("elephant.jpg");//在JSplashWindow.java文件相同路径下添加一图片,图片名称为elephant.jpg
if(url!=null){
splash.add(new JLabel(new ImageIcon(url)),BorderLayout.CENTER);
}
setContentPane(splash);
Dimension screen = getToolkit().getScreenSize();//获取屏幕分辨率
pack();
setSize(500,400);
setLocation((screen.width-getSize().width)/2,(screen.height-getSize().height)/2);
//使窗口居中显示
}
public void start(){
this.toFront();//当前窗口在最前面显示
splashThread=new Thread(this);
splashThread.start();
}
public void run(){
try{
show();
Thread.sleep(3000);
}catch(Exception ex){
ex.printStackTrace();
}
this.dispose();//关闭窗口
}
static void showFrame(String title){
JFrame frame=new JFrame(title);
frame.setSize(400, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=frame.getSize();
if(frameSize.height>screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width>screenSize.width){
frameSize.width=screenSize.width;
}
frame.setLocation((screenSize.width-frameSize.width)/2, (screenSize.height-frameSize.height)/2);
Label lb=new Label("进入应用系统");
frame.getContentPane().add(lb, BorderLayout.CENTER);
lb.setFont(new Font("default",1,36));
frame.setVisible(true);
}
public static void main(String[] args){
showFrame("Do splash window");
JSplashWindow splash=new JSplashWindow();
splash.start();
}
}