Java实现软件运行时启动信息窗口的方法

所属分类: 软件编程 / java 阅读数: 41
收藏 0 赞 0 分享

本文实例形式详述了Java实现一个程序运行时的启动窗口效果,如常用的Microsoft Word、 Borland JBuilder 等,这样的窗口称为信息窗口。使用信息窗口的好处是可以使用户在等待软件主界面出现前的一段时间中得知软件运行状态。本例将演示如何来实现信息窗口,当打开程序时,信息窗口先显示,并在窗口上倒计时,直到“waiting 0”时,关闭该窗口,显示程序的主窗口。

该功能的主要实现方法如下:

一般来说,大多数的信息窗口是没有标题栏的,因此信息窗口不能由继承JFrame 类来实现,一种简单的做法是通过继承JWindow 来实现(当然继承Window 类也可以,但一个原则是尽量使用swing 中的界面
类)。另外,本例用到java.awt 包中的MediaTracker 类。使用该类的好处是可以更好地管理程序中要使用的图片,同时还可以保证图片和界面同时显示,避免了窗口显示后很久才显示图片的缺点。

具体操作步骤如下:

1.新建一个Project,取名为JSpleshWindowDemo,其他设置按默认值。

2.新建一个Application ,取名为JSpleshWindowDemo,主窗口取名为MainFrame,主窗口标题取名为JSpleshWindowDemo。

3.先来编写信息窗口的代码。新建一个新类SpleshWindow.java,继承java.swing.JWindow类。在SpleshWindow 类中,定义新的属性,代码如下:

private String statusStr=null; //信息窗口中要显示的信息
private Image logoImg=null; //信息窗口中的显示图片

4.向构造方法中添加代码,加载图片并初始化窗体,实现代码如下:

public SpleshWindow(JFrame owner) { //以JFrame 对象为参数,可以是信息窗口和主窗口交互
super( owner );
// 加载图片
logoImg=getToolkit().getImage( ClassLoader.getSystemResource("images/splesh.jpg") );
// 等待图片加载完成
java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); //创建一个MediaTracker 对象
tracker.addImage( logoImg , 0 ); //将图片放入MediaTracker 对象中,序号为0
try{ //等待直到图片加载完成
tracker.waitForAll();
}catch ( InterruptedException e ) {
e.printStackTrace();
}
// 设置信息窗体在屏幕上的显示位置
setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -
logoImg.getHeight(this)/2 );
setSize( logoImg.getWidth(this) , logoImg.getHeight(this) ); // 设置窗口大小
}

5.编写设置显示信息的方法,代码如下:

public void setStatus( String status ){
statusStr=status;
paint( getGraphics() ); // 重画窗口来更新信息窗口中的显示信息
}

6.重置paint()方法来绘制图片和显示信息的方法,代码如下:

public void paint(Graphics g) {
/**@todo Override this java.awt.Component method*/
super.paint(g);
//绘制图片
if ( logoImg!=null )
g.drawImage( logoImg , 0 , 0 , this );
//绘制显示信息
if ( statusStr!=null ){
g.setColor(Color.red);
g.drawString( statusStr , 240 , getSize().height-250 );
}
}

7.编写MainFrame 类,实现java.lang.Runnable 接口,并定义新的属性,设置如下:

private SpleshWindow spleshWindow=null;

8.向MainFrame 类的初始化方法中,添加运行信息窗口的代码,实现代码如下:

private void jbInit() throws Exception {
//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("JSpleshWindowDemo");
//创建新的线程,运行信息窗口
Thread t = new Thread(this);
t.start();
// 等待信息窗口显示
try{
t.join();
}catch ( InterruptedException e ){
e.printStackTrace() ;
}
// 向信息窗体中显示消息
long x=System.currentTimeMillis();
while ( System.currentTimeMillis()-x <35000 )
{
System.out.print( "Waiting "+(35000-System.currentTimeMillis()+x+" \r") );
// you can set status string in splash window
spleshWindow.setStatus( "Waiting "+(35-(long)(System.currentTimeMillis()/1000)+(long)(x/1000)) );
}
//关闭信息窗体
if ( spleshWindow!=null ) {
spleshWindow.dispose();
spleshWindow=null;
}
}

9.编写MainFrame 类的run()方法,如下所示:

public void run() {
//新建一个信息窗体并显示
spleshWindow=new SpleshWindow( this );
spleshWindow.show();
// throw new java.lang.UnsupportedOperationException("Method run() not yet implemented.");
}
更多精彩内容其他人还在看

SpringBoot中使用Ehcache的详细教程

EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。这篇文章主要介绍了SpringBoot中使用Ehcache的相关知识,需要的朋友可以参考下
收藏 0 赞 0 分享

在idea 中添加和删除模块Module操作

这篇文章主要介绍了在idea 中添加和删除模块Module操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

java spring整合junit操作(有详细的分析过程)

这篇文章主要介绍了java spring整合junit操作(有详细的分析过程),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解JAVA 弱引用

这篇文章主要介绍了 JAVA 弱引用的相关资料,帮助大家更好的理解和学习java引用对象,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

深入了解JAVA 虚引用

这篇文章主要介绍了JAVA 虚引用的相关资料,帮助大家更好的理解和学习JAVA,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

详解JAVA 强引用

这篇文章主要介绍了JAVA 强引用的相关资料,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

java中的按位与(&)用法说明

这篇文章主要介绍了java中的按位与(&)用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
收藏 0 赞 0 分享

深入了解JAVA 软引用

这篇文章主要介绍了JAVA 软引用的相关资料,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

利用MyBatis实现条件查询的方法汇总

这篇文章主要给大家介绍了关于利用MyBatis实现条件查询的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MyBatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Intellij IDEA 与maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.PathTranslator was bound

这篇文章主要介绍了Intellij IDEA 与maven 版本不符 Unable to import maven project See logs for details: No implementation for org.apache.maven.model.path.Pa
收藏 0 赞 0 分享
查看更多