Artikel ini merinci efek jendela startup Java ketika suatu program sedang berjalan, seperti Microsoft Word yang umum digunakan, Borland JBuilder, dll. Jendela seperti itu disebut jendela informasi. Keuntungan menggunakan jendela informasi adalah pengguna dapat mengetahui status pengoperasian perangkat lunak selama jangka waktu tertentu sebelum menunggu antarmuka utama perangkat lunak muncul. Contoh ini akan mendemonstrasikan cara mengimplementasikan jendela informasi. Ketika program dibuka, jendela informasi ditampilkan terlebih dahulu dan menghitung mundur pada jendela hingga "menunggu 0", kemudian jendela ditutup dan jendela utama program ditampilkan.
Metode implementasi utama dari fungsi ini adalah sebagai berikut:
Secara umum, sebagian besar jendela informasi tidak memiliki bilah judul, sehingga jendela informasi tidak dapat diimplementasikan dengan mewarisi kelas JFrame. Cara sederhana adalah mengimplementasikannya dengan mewarisi kelas JWindow (tentu saja, mewarisi kelas Window juga dimungkinkan, tetapi salah satu prinsipnya adalah mencoba menggunakan kelas antarmuka dalam ayunan). Selain itu, contoh ini menggunakan kelas MediaTracker dalam paket java.awt. Keuntungan menggunakan kelas ini adalah dapat mengelola gambar yang akan digunakan dalam program dengan lebih baik, dan juga dapat memastikan bahwa gambar dan antarmuka ditampilkan secara bersamaan, menghindari kerugian menampilkan gambar lama setelah jendela ditutup. ditampilkan.
Langkah-langkah spesifiknya adalah sebagai berikut:
1. Buat Proyek baru, beri nama JSpleshWindowDemo, dan pertahankan pengaturan lainnya sebagai default.
2. Buat Aplikasi baru, beri nama JSpleshWindowDemo, beri nama jendela utama MainFrame, dan beri nama judul jendela utama JSpleshWindowDemo.
3. Mari kita tulis kode untuk jendela informasi terlebih dahulu. Buat kelas baru SpleshWindow.java, yang mewarisi kelas java.swing.JWindow. Di kelas SpleshWindow, tentukan properti baru dengan kode berikut:
private String statusStr=null; //Informasi yang akan ditampilkan di jendela informasi private Image logoImg=null; //Menampilkan gambar di jendela informasi
4. Tambahkan kode ke metode konstruksi, muat gambar dan inisialisasi formulir. Kode implementasinya adalah sebagai berikut:
public SpleshWindow(JFrame owner) { //Ambil objek JFrame sebagai parameter, yang dapat berupa interaksi antara jendela informasi dan jendela utama super( owner ); // Muat gambar logoImg=getToolkit().getImage( ClassLoader. getSystemResource("images/splesh.jpg ") );//Tunggu gambar dimuat java.awt.MediaTracker tracking=new java.awt.MediaTracker( this ); //Buat objek MediaTracker tracking.addImage( logoImg , 0 ); //Masukkan gambar ke dalam objek MediaTracker dengan nomor seri 0 try{ //Tunggu hingga gambar dimuat tracking.waitForAll();}catch ( InterruptedException e ) {e .printStackTrace();}//Mengatur posisi tampilan formulir informasi di layar setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -logoImg.getHeight(this)/2 );setSize( logoImg.getWidth(ini ), logoImg.getHeight(ini) ); // Atur ukuran jendela}5. Tulis metode untuk mengatur informasi tampilan. Kodenya adalah sebagai berikut:
public void setStatus( String status ){statusStr=status;paint( getGraphics() ); // Gambar ulang jendela untuk memperbarui informasi tampilan di jendela informasi}6. Reset metode paint() untuk menggambar dan menampilkan informasi. Kodenya adalah sebagai berikut:
public void paint(Graphics g) {/**@todo Ganti metode java.awt.Component ini*/super.paint(g);//Gambarlah gambar if (logoImg!=null)g.drawImage( logoImg, 0, 0 , ini );//Gambar dan tampilkan informasi if ( statusStr!=null ){g.setColor(Color.red);g.drawString( statusStr , 240, getSize().height-250 );}}7. Tulis kelas MainFrame, implementasikan antarmuka java.lang.Runnable, dan tentukan atribut baru.
pribadi SpleshWindow spleshWindow=null;
8. Tambahkan kode untuk menjalankan jendela informasi ke metode inisialisasi kelas MainFrame. Kode implementasinya adalah sebagai berikut:
private void jbInit() menampilkan Pengecualian {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Ikon Anda]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);ini.setSize(Dimensi baru(400, 300));this.setTitle("JSpleshWindowDemo");//Buat thread baru dan jalankan jendela informasi Thread t = new Thread(this);t.start();//Tunggu hingga jendela informasi ditampilkan try{ t.join( );}catch ( InterruptedException e ){e.printStackTrace() ;}// Menampilkan pesan ke jendela informasi long x=System.currentTimeMillis(); while ( System.currentTimeMillis()-x <35000 ){System.out.print( "Waiting "+(35000-System.currentTimeMillis()+x+" /r") );// Anda dapat menyetel string status di splash windowspleshWindow.setStatus ( "Menunggu "+(35-(panjang)(System.currentTimeMillis()/1000)+(panjang)(x/1000)) );}//Tutup jendela informasi jika ( spleshWindow!=null ) {spleshWindow.dispose();spleshWindow=null;}}9. Tulis metode run() kelas MainFrame sebagai berikut:
public void run() {//Buat jendela informasi baru dan tampilkan spleshWindow=new SpleshWindow( this );spleshWindow.show();// throw new java.lang.UnsupportedOperationException("Method run() belum diterapkan.") ;}