欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)軟件運行時啟動信息窗口的方法

 更新時間:2014年08月01日 14:58:19   投稿:shichen2014  
這篇文章主要介紹了Java實現(xiàn)軟件運行時啟動信息窗口的方法,比較實用的功能,需要的朋友可以參考下

本文實例形式詳述了Java實現(xiàn)一個程序運行時的啟動窗口效果,如常用的Microsoft Word、 Borland JBuilder 等,這樣的窗口稱為信息窗口。使用信息窗口的好處是可以使用戶在等待軟件主界面出現(xiàn)前的一段時間中得知軟件運行狀態(tài)。本例將演示如何來實現(xiàn)信息窗口,當(dāng)打開程序時,信息窗口先顯示,并在窗口上倒計時,直到“waiting 0”時,關(guān)閉該窗口,顯示程序的主窗口。

該功能的主要實現(xiàn)方法如下:

一般來說,大多數(shù)的信息窗口是沒有標(biāo)題欄的,因此信息窗口不能由繼承JFrame 類來實現(xiàn),一種簡單的做法是通過繼承JWindow 來實現(xiàn)(當(dāng)然繼承Window 類也可以,但一個原則是盡量使用swing 中的界面
類)。另外,本例用到j(luò)ava.awt 包中的MediaTracker 類。使用該類的好處是可以更好地管理程序中要使用的圖片,同時還可以保證圖片和界面同時顯示,避免了窗口顯示后很久才顯示圖片的缺點。

具體操作步驟如下:

1.新建一個Project,取名為JSpleshWindowDemo,其他設(shè)置按默認(rèn)值。

2.新建一個Application ,取名為JSpleshWindowDemo,主窗口取名為MainFrame,主窗口標(biāo)題取名為JSpleshWindowDemo。

3.先來編寫信息窗口的代碼。新建一個新類SpleshWindow.java,繼承java.swing.JWindow類。在SpleshWindow 類中,定義新的屬性,代碼如下:

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

4.向構(gòu)造方法中添加代碼,加載圖片并初始化窗體,實現(xiàn)代碼如下:

public SpleshWindow(JFrame owner) { //以JFrame 對象為參數(shù),可以是信息窗口和主窗口交互
super( owner );
// 加載圖片
logoImg=getToolkit().getImage( ClassLoader.getSystemResource("images/splesh.jpg") );
// 等待圖片加載完成
java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); //創(chuàng)建一個MediaTracker 對象
tracker.addImage( logoImg , 0 ); //將圖片放入MediaTracker 對象中,序號為0
try{ //等待直到圖片加載完成
tracker.waitForAll();
}catch ( InterruptedException e ) {
e.printStackTrace();
}
// 設(shè)置信息窗體在屏幕上的顯示位置
setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -
logoImg.getHeight(this)/2 );
setSize( logoImg.getWidth(this) , logoImg.getHeight(this) ); // 設(shè)置窗口大小
}

5.編寫設(shè)置顯示信息的方法,代碼如下:

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 類,實現(xiàn)java.lang.Runnable 接口,并定義新的屬性,設(shè)置如下:

private SpleshWindow spleshWindow=null;

8.向MainFrame 類的初始化方法中,添加運行信息窗口的代碼,實現(xiàn)代碼如下:

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");
//創(chuàng)建新的線程,運行信息窗口
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)) );
}
//關(guān)閉信息窗體
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.");
}

相關(guān)文章

  • Eclipse開發(fā)JavaWeb項目配置Tomcat的方法步驟

    Eclipse開發(fā)JavaWeb項目配置Tomcat的方法步驟

    本文主要介紹了Eclipse開發(fā)JavaWeb項目配置Tomcat的方法步驟,首先介紹eclipse開發(fā)JavaWeb項目需要配置的相關(guān)環(huán)境,使用tomcat軟件在本地搭建服務(wù)器,然后再在eclipse環(huán)境下配置tomcat,感興趣的可以了解一下
    2021-08-08
  • 面試題:java中為什么foreach中不允許對元素進(jìn)行add和remove

    面試題:java中為什么foreach中不允許對元素進(jìn)行add和remove

    讀者遇到了一個比較經(jīng)典的面試題,也就是標(biāo)題上說的,為什么 foreach 中不允許對元素進(jìn)行 add 和 remove,本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-10-10
  • IDEA2022性能優(yōu)化的一些設(shè)置技巧

    IDEA2022性能優(yōu)化的一些設(shè)置技巧

    這篇文章主要介紹了IDEA2022性能優(yōu)化的一些設(shè)置,需要的朋友可以參考下
    2022-08-08
  • Java通過反射注解賦值的方法詳解

    Java通過反射注解賦值的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java語言如何通過反射實現(xiàn)注解賦值,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2022-07-07
  • Java中IO流解析及代碼實例詳解

    Java中IO流解析及代碼實例詳解

    流是一種抽象概念,它代表了數(shù)據(jù)的無結(jié)構(gòu)化傳遞。。用來進(jìn)行輸入輸出操作的流就稱為IO流。換句話說,IO流就是以流的方式進(jìn)行輸入輸出
    2021-08-08
  • 詳解Java中Iterator迭代器的用法

    詳解Java中Iterator迭代器的用法

    這篇文章主要介紹了Java中Iterator迭代器的用法,比較簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • java kafka寫入數(shù)據(jù)到HDFS問題

    java kafka寫入數(shù)據(jù)到HDFS問題

    這篇文章主要介紹了java kafka寫入數(shù)據(jù)到HDFS問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java停止線程的3種方法

    Java停止線程的3種方法

    這篇文章主要分享Java停止線程的3種方法,分別是自定義中斷標(biāo)識符,停止線程、使用線程中斷方法interrupt停止線程、使用stop停止線程。下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-05-05
  • Java設(shè)計模式之策略模式解析

    Java設(shè)計模式之策略模式解析

    這篇文章主要介紹了Java設(shè)計模式之策略模式解析,在策略模式中,一個類的行為或其算法可以在運行時更改,這種類型的設(shè)計模式屬于行為型模式,需要的朋友可以參考下
    2023-10-10
  • Java實現(xiàn)ECDSA簽名算法

    Java實現(xiàn)ECDSA簽名算法

    這篇文章主要介紹了Java實現(xiàn)ECDSA簽名算法,幫助大家更好得利用Java實現(xiàn)機器學(xué)習(xí)算法,感興趣的朋友可以了解下
    2020-10-10

最新評論