最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)軟件運(yùn)行時(shí)啟動(dòng)信息窗口的方法

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

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

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

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

具體操作步驟如下:

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

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

3.先來(lái)編寫(xiě)信息窗口的代碼。新建一個(gè)新類SpleshWindow.java,繼承java.swing.JWindow類。在SpleshWindow 類中,定義新的屬性,代碼如下:

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

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

public SpleshWindow(JFrame owner) { //以JFrame 對(duì)象為參數(shù),可以是信息窗口和主窗口交互
super( owner );
// 加載圖片
logoImg=getToolkit().getImage( ClassLoader.getSystemResource("images/splesh.jpg") );
// 等待圖片加載完成
java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); //創(chuàng)建一個(gè)MediaTracker 對(duì)象
tracker.addImage( logoImg , 0 ); //將圖片放入MediaTracker 對(duì)象中,序號(hào)為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.編寫(xiě)設(shè)置顯示信息的方法,代碼如下:

public void setStatus( String status ){
statusStr=status;
paint( getGraphics() ); // 重畫(huà)窗口來(lái)更新信息窗口中的顯示信息
}

6.重置paint()方法來(lái)繪制圖片和顯示信息的方法,代碼如下:

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

private SpleshWindow spleshWindow=null;

8.向MainFrame 類的初始化方法中,添加運(yùn)行信息窗口的代碼,實(shí)現(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)建新的線程,運(yùn)行信息窗口
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.編寫(xiě)MainFrame 類的run()方法,如下所示:

public void run() {
//新建一個(gè)信息窗體并顯示
spleshWindow=new SpleshWindow( this );
spleshWindow.show();
// throw new java.lang.UnsupportedOperationException("Method run() not yet implemented.");
}

相關(guān)文章

  • Spring Boot優(yōu)雅使用RocketMQ的方法實(shí)例

    Spring Boot優(yōu)雅使用RocketMQ的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Spring Boot優(yōu)雅使用RocketMQ的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 使用spring的IOC解決程序耦合的方法

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

    這篇文章主要介紹了使用spring的IOC解決程序耦合的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 理解maven命令package、install、deploy的聯(lián)系與區(qū)別

    理解maven命令package、install、deploy的聯(lián)系與區(qū)別

    這篇文章主要介紹了理解maven命令package、install、deploy的聯(lián)系與區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • JavaWeb使用POI操作Excel文件實(shí)例

    JavaWeb使用POI操作Excel文件實(shí)例

    這篇文章主要介紹了JavaWeb使用POI操作Excel文件,需要的朋友可以參考下
    2017-04-04
  • Java實(shí)現(xiàn)泡泡堂對(duì)戰(zhàn)版游戲的示例代碼

    Java實(shí)現(xiàn)泡泡堂對(duì)戰(zhàn)版游戲的示例代碼

    本文將利用Java制作經(jīng)典游戲《泡泡堂》,文中使用了MVC模式,分離了模型、視圖和控制器,使得項(xiàng)目結(jié)構(gòu)清晰易于擴(kuò)展,感興趣的可以了解一下
    2022-04-04
  • PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法

    PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法

    下面小編就為大家分享一篇PostMan post請(qǐng)求發(fā)送Json數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • 淺談Java中的final關(guān)鍵字與C#中的const, readonly關(guān)鍵字

    淺談Java中的final關(guān)鍵字與C#中的const, readonly關(guān)鍵字

    下面小編就為大家?guī)?lái)一篇淺談Java中的final關(guān)鍵字與C#中的const, readonly關(guān)鍵字。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • Java死鎖的產(chǎn)生原因及解決方法總結(jié)

    Java死鎖的產(chǎn)生原因及解決方法總結(jié)

    Java中的死鎖是指多個(gè)線程同時(shí)占用一些共享資源且彼此相互等待,從而導(dǎo)致所有的線程都被阻塞,不能繼續(xù)執(zhí)行程序的情況,本文小編給大家介紹了Java死鎖的產(chǎn)生原因及解決方法總結(jié),需要的朋友可以參考下
    2023-11-11
  • 詳解Spring Boot 配置加載順序及屬性加載順序

    詳解Spring Boot 配置加載順序及屬性加載順序

    這篇文章主要介紹了詳解Spring Boot 配置加載順序及屬性加載順序,本章內(nèi)容基于 Spring Boot 2.0 進(jìn)行詳解,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-08-08
  • MyBatis中常見(jiàn)的SQL執(zhí)行方式及其使用方法

    MyBatis中常見(jiàn)的SQL執(zhí)行方式及其使用方法

    MyBatis可能很多人都一直在用,但是MyBatis的SQL執(zhí)行流程可能并不是所有人都清楚了,下面這篇文章主要給大家介紹了關(guān)于MyBatis中常見(jiàn)的SQL執(zhí)行方式及其使用的相關(guān)資料,需要的朋友可以參考下
    2023-09-09

最新評(píng)論

密云县| 孙吴县| 吴忠市| 平安县| 会宁县| 湘潭县| 余干县| 奉贤区| 子长县| 东台市| 镇安县| 白水县| 凌海市| 汉中市| 石林| 龙陵县| 成安县| 祁阳县| 闵行区| 浦东新区| 东安县| 合川市| 东乡族自治县| 中牟县| 香格里拉县| 乌鲁木齐县| 邯郸县| 玉林市| 宁明县| 武夷山市| 方山县| 遵义市| 民和| 广灵县| 彭阳县| 陇西县| 临夏县| 阿拉善右旗| 宣汉县| 临海市| 铜梁县|