この記事では、一般的に使用される Microsoft Word、Borland JBuilder などのプログラム実行時の Java の起動ウィンドウの影響について詳しく説明します。このようなウィンドウは情報ウィンドウと呼ばれます。情報ウィンドウを使用する利点は、ソフトウェアのメイン インターフェイスが表示されるまで待つ前に、ユーザーがソフトウェアの実行ステータスを一定期間知ることができることです。この例では、プログラムが開かれると、最初に情報ウィンドウが表示され、「待機 0」になるまでウィンドウがカウントダウンされ、その後ウィンドウが閉じてプログラムのメイン ウィンドウが表示されます。
この機能の主な実装方法は以下のとおりです。
一般的に情報ウィンドウにはタイトルバーがないものが多いため、JFrameクラスを継承して実装することはできません。簡単な方法としては、JWindowクラスを継承して実装する方法があります(もちろんWindowクラスを継承することも可能です)。ただし、原則の 1 つは、swing でインターフェイス クラスを使用することです)。さらに、この例では java.awt パッケージの MediaTracker クラスを使用します。このクラスを使用する利点は、プログラムで使用される画像をより適切に管理できることと、画像とインターフェイスが同時に表示されることを保証できることで、ウィンドウが閉じられてから長い時間が経過しても画像が表示されるという欠点を回避できることです。表示されます。
具体的な手順は次のとおりです。
1.新しいプロジェクトを作成し、JSpleshWindowDemo という名前を付け、他の設定はデフォルトのままにします。
2.新しいアプリケーションを作成し、JSpleshWindowDemo という名前を付け、メイン ウィンドウに MainFrame という名前を付け、メイン ウィンドウのタイトルに JSpleshWindowDemo という名前を付けます。
3.まずは情報ウィンドウのコードを書きましょう。 java.swing.JWindow クラスを継承する新しいクラス SpleshWindow.java を作成します。 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 ); // シリアル番号 0 の MediaTracker オブジェクトに画像を入れます 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 voidPaint(Graphics g) {/**@todo この java.awt.Component メソッドをオーバーライドします*/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 インターフェイスを実装し、新しい属性を定義します。設定は次のとおりです。
プライベート SpleshWindow spleshWindow=null;
8. MainFrameクラスの初期化メソッドに情報ウィンドウを実行するコードを追加します。 実装コードは次のとおりです。
private void jbInit() は例外をスローします {//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") );// スプラッシュでステータス文字列を設定できます windowspleshWindow.setStatus ( "待機中"+(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("メソッド run() はまだ実装されていません。") ;}