国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 15:27:49
字體:
來源:轉載
供稿:網(wǎng)友

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

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

一般來說,大多數(shù)的信息窗口是沒有標題欄的,因此信息窗口不能由繼承JFrame 類來實現(xiàn),一種簡單的做法是通過繼承JWindow 來實現(xiàn)(當然繼承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.向構造方法中添加代碼,加載圖片并初始化窗體,實現(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 對象中,序號為0try{ //等待直到圖片加載完成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 類,實現(xiàn)java.lang.Runnable 接口,并定義新的屬性,設置如下:

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 windowspleshWindow.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.");}
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 林口县| 满城县| 从化市| 富裕县| 乌审旗| 巴东县| 咸阳市| 清流县| 盖州市| 合水县| 丰原市| 平昌县| 灯塔市| 浦城县| 嘉荫县| 鹤壁市| 安岳县| 合山市| 内黄县| 儋州市| 普定县| 监利县| 田东县| 随州市| 澎湖县| 白玉县| 平乡县| 濮阳市| 磴口县| 高安市| 英吉沙县| 麻江县| 明星| 南江县| 南皮县| 沈丘县| 内乡县| 依安县| 永德县| 阜新市| 千阳县|