บทความนี้ให้รายละเอียดเกี่ยวกับเอฟเฟกต์หน้าต่างเริ่มต้นของ Java เมื่อโปรแกรมกำลังทำงาน เช่น Microsoft Word ที่ใช้กันทั่วไป, Borland JBuilder เป็นต้น หน้าต่างดังกล่าวเรียกว่าหน้าต่างข้อมูล ข้อดีของการใช้หน้าต่างข้อมูลคือผู้ใช้สามารถทราบสถานะการทำงานของซอฟต์แวร์ได้เป็นระยะเวลาหนึ่งก่อนที่จะรอให้อินเทอร์เฟซหลักของซอฟต์แวร์ปรากฏขึ้น ตัวอย่างนี้จะสาธิตวิธีการใช้หน้าต่างข้อมูล เมื่อเปิดโปรแกรม หน้าต่างข้อมูลจะปรากฏขึ้นก่อนและนับถอยหลังบนหน้าต่างจนกระทั่ง "รอ 0" จากนั้นหน้าต่างจะปิดและหน้าต่างหลักของโปรแกรมจะปรากฏขึ้น
วิธีการใช้งานหลักของฟังก์ชันนี้มีดังนี้:
โดยทั่วไปแล้ว หน้าต่างข้อมูลส่วนใหญ่ไม่มีแถบหัวเรื่อง ดังนั้นหน้าต่างข้อมูลจึงไม่สามารถใช้งานได้โดยการสืบทอดคลาส JFrame วิธีง่ายๆ คือการนำไปใช้โดยการสืบทอดคลาส JWindow (แน่นอนว่าการสืบทอดคลาส Window ก็เป็นไปได้เช่นกัน แต่หลักการหนึ่งคือพยายามใช้คลาสอินเทอร์เฟซในการแกว่ง) นอกจากนี้ ตัวอย่างนี้ใช้คลาส MediaTracker ในแพ็คเกจ java.awt ข้อดีของการใช้คลาสนี้คือสามารถจัดการรูปภาพที่จะใช้ในโปรแกรมได้ดีขึ้น และยังสามารถรับประกันได้ว่ารูปภาพและอินเทอร์เฟซจะแสดงพร้อมกัน หลีกเลี่ยงข้อเสียของการแสดงรูปภาพเป็นเวลานานหลังจากหน้าต่างถูกเปิด แสดง
ขั้นตอนเฉพาะมีดังนี้:
1. สร้างโปรเจ็กต์ใหม่ ตั้งชื่อเป็น JSpleshWindowDemo และเก็บการตั้งค่าอื่นๆ ไว้เป็นค่าเริ่มต้น
2. สร้างแอปพลิเคชันใหม่ ตั้งชื่อเป็น JSpleshWindowDemo ตั้งชื่อหน้าต่างหลัก MainFrame และตั้งชื่อชื่อหน้าต่างหลัก JSpleshWindowDemo
3. มาเขียนโค้ดสำหรับหน้าต่างข้อมูลกันก่อน สร้างคลาสใหม่ SpleshWindow.java ซึ่งสืบทอดคลาส java.swing.JWindow ในคลาส SpleshWindow ให้กำหนดคุณสมบัติใหม่ด้วยรหัสต่อไปนี้:
ส่วนตัว String statusStr=null; //ข้อมูลที่จะแสดงในหน้าต่างข้อมูล รูปภาพ logoImg=null; //แสดงรูปภาพในหน้าต่างข้อมูล
4. เพิ่มโค้ดให้กับวิธีการก่อสร้าง โหลดอิมเมจ และเตรียมใช้งานฟอร์ม โค้ดการใช้งานมีดังนี้:
public SpleshWindow(เจ้าของ JFrame) { //ใช้วัตถุ 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 ); //ใส่รูปภาพลงในวัตถุ MediaTracker ด้วยหมายเลขซีเรียล 0 ลอง{/ //รอจนกระทั่งโหลดรูปภาพ tracker.waitForAll();}catch ( InterruptedException e ) {e .printStackTrace();}//กำหนดตำแหน่งการแสดงแบบฟอร์มข้อมูลบนหน้าจอ setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(นี่)/2 , getToolkit().getScreenSize().height/2 -logoImg.getHeight(นี้)/2 );setSize( logoImg.getWidth(นี่ ), logoImg.getHeight(นี่) ); // ตั้งค่าขนาดหน้าต่าง}5. เขียนวิธีการตั้งค่าข้อมูลการแสดงผลดังนี้
public void setStatus( String status ){statusStr=status;paint( getGraphics() ); // วาดหน้าต่างใหม่เพื่ออัพเดตข้อมูลที่แสดงในหน้าต่างข้อมูล}6. รีเซ็ตเมธอด Paint() เพื่อวาดภาพและแสดงข้อมูล รหัสจะเป็นดังนี้:
โมฆะสาธารณะสี (กราฟิก g) {/**@todo แทนที่วิธีการ java.awt.Component นี้*/super.paint(g);//วาดภาพถ้า (logoImg!=null)g.drawImage( logoImg, 0, 0 นี้ );//วาดและแสดงข้อมูลถ้า ( statusStr!=null ){g.setColor(Color.red);g.drawString( statusStr , 240, getSize().height-250 );}}7. เขียนคลาส MainFrame ใช้อินเทอร์เฟซ java.lang.Runnable และกำหนดคุณลักษณะใหม่ การตั้งค่ามีดังนี้:
SpleshWindow ส่วนตัว spleshWindow=null;
8. เพิ่มรหัสสำหรับการเรียกใช้หน้าต่างข้อมูลไปยังวิธีการเริ่มต้นของคลาส MainFrame รหัสการใช้งานจะเป็นดังนี้:
โมฆะส่วนตัว jbInit() พ่นข้อยกเว้น {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);this.setSize(มิติใหม่ (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-(ยาว)(System.currentTimeMillis()/1000)+(ยาว)(x/1000)) );}//ปิดหน้าต่างข้อมูลถ้า ( spleshWindow!=null ) {spleshWindow.dispose();spleshWindow=null;}}9. เขียนเมธอด run() ของคลาส MainFrame ดังนี้
public void run() {//สร้างหน้าต่างข้อมูลใหม่และแสดง spleshWindow=new SpleshWindow( this );spleshWindow.show();// Throw new java.lang.UnsupportedOperationException("Method run() not allowance.") ;}