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

 更新时间:2014年08月01日 14:58:19   投稿:shichen2014  
这篇文章主要介绍了Java实现软件运行时启动信息窗口的方法,比较实用的功能,需要的朋友可以参考下

本文实例形式详述了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.");
}

相关文章

  • Spring Boot优雅使用RocketMQ的方法实例

    Spring Boot优雅使用RocketMQ的方法实例

    这篇文章主要给大家介绍了关于Spring Boot优雅使用RocketMQ的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • 使用spring的IOC解决程序耦合的方法

    使用spring的IOC解决程序耦合的方法

    这篇文章主要介绍了使用spring的IOC解决程序耦合的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 理解maven命令package、install、deploy的联系与区别

    理解maven命令package、install、deploy的联系与区别

    这篇文章主要介绍了理解maven命令package、install、deploy的联系与区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • JavaWeb使用POI操作Excel文件实例

    JavaWeb使用POI操作Excel文件实例

    这篇文章主要介绍了JavaWeb使用POI操作Excel文件,需要的朋友可以参考下
    2017-04-04
  • Java实现泡泡堂对战版游戏的示例代码

    Java实现泡泡堂对战版游戏的示例代码

    本文将利用Java制作经典游戏《泡泡堂》,文中使用了MVC模式,分离了模型、视图和控制器,使得项目结构清晰易于扩展,感兴趣的可以了解一下
    2022-04-04
  • PostMan post请求发送Json数据的方法

    PostMan post请求发送Json数据的方法

    下面小编就为大家分享一篇PostMan post请求发送Json数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 浅谈Java中的final关键字与C#中的const, readonly关键字

    浅谈Java中的final关键字与C#中的const, readonly关键字

    下面小编就为大家带来一篇浅谈Java中的final关键字与C#中的const, readonly关键字。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Java死锁的产生原因及解决方法总结

    Java死锁的产生原因及解决方法总结

    Java中的死锁是指多个线程同时占用一些共享资源且彼此相互等待,从而导致所有的线程都被阻塞,不能继续执行程序的情况,本文小编给大家介绍了Java死锁的产生原因及解决方法总结,需要的朋友可以参考下
    2023-11-11
  • 详解Spring Boot 配置加载顺序及属性加载顺序

    详解Spring Boot 配置加载顺序及属性加载顺序

    这篇文章主要介绍了详解Spring Boot 配置加载顺序及属性加载顺序,本章内容基于 Spring Boot 2.0 进行详解,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-08-08
  • MyBatis中常见的SQL执行方式及其使用方法

    MyBatis中常见的SQL执行方式及其使用方法

    MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,下面这篇文章主要给大家介绍了关于MyBatis中常见的SQL执行方式及其使用的相关资料,需要的朋友可以参考下
    2023-09-09

最新评论