java_Java实现软件运行时启动信息窗口的方法,本文实例形式详述了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) { /IT之家IT之家@todo Override this java.awt.Component methodIT之家/ 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."); }
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/java/8555.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
Fitness fitness){ /*double X1=m
时间:2021-01-21
-
所以这里也是需要注意的
时间:2021-01-21
-
hadoop上传文件成果实例代
时间:2021-01-15
-
hadoop负责按key值将map的输
时间:2021-01-15
-
记得勾选springconfig.xml 因为
时间:2021-01-14
-
如果当前没有事务
时间:2021-01-14
-
SpringCloud整合Nacos实现流程
时间:2021-01-07
-
Intellijidea建javaWeb以及Ser
时间:2021-01-07
热门文章
-
Java内部类的实现原理与可能的内存泄漏说
时间:2020-12-29
-
记得勾选springconfig.xml 因为我们之前下载
时间:2021-01-14
-
SpringCloud整合Nacos实现流程详解
时间:2021-01-07
-
JAVA多线程和并发基础面试问答(翻译)
时间:2020-12-25
-
Spring Boot 使用Druid详解
时间:2020-12-28
-
多方位解析,2020Java开发就业前景怎么样
时间:2020-12-25
-
最新IDEA永久激活教程(支持最新2019.2版本
时间:2020-12-25
-
Fitness fitness){ /*double X1=min+0.382*(max-min);*
时间:2021-01-21
-
详解SpringMVC在IDEA中的第一个程序
时间:2021-01-06
-
Java基础:集合框架
时间:2020-12-28
