In diesem Artikel wird der Startfenstereffekt von Java beschrieben, wenn ein Programm ausgeführt wird, z. B. häufig verwendetes Microsoft Word, Borland JBuilder usw. Solche Fenster werden als Informationsfenster bezeichnet. Der Vorteil der Verwendung des Informationsfensters besteht darin, dass der Benutzer den Betriebsstatus der Software für einen bestimmten Zeitraum erkennen kann, bevor er auf das Erscheinen der Hauptoberfläche der Software wartet. Dieses Beispiel zeigt, wie ein Informationsfenster implementiert wird. Beim Öffnen des Programms wird zuerst das Informationsfenster angezeigt und das Fenster wird heruntergezählt, bis „Warten 0“ angezeigt wird. Anschließend wird das Fenster geschlossen und das Hauptfenster des Programms angezeigt.
Die wichtigsten Implementierungsmethoden dieser Funktion sind wie folgt:
Im Allgemeinen haben die meisten Informationsfenster keine Titelleiste, daher kann das Informationsfenster nicht durch Erben der JFrame-Klasse implementiert werden. Eine einfache Möglichkeit besteht darin, es durch Erben der JWindow-Klasse zu implementieren (natürlich ist auch das Erben der Window-Klasse möglich). Ein Prinzip besteht jedoch darin, zu versuchen, Schnittstellenklassen in Swing zu verwenden. Darüber hinaus verwendet dieses Beispiel die MediaTracker-Klasse im Paket java.awt. Der Vorteil der Verwendung dieser Klasse besteht darin, dass sie die im Programm zu verwendenden Bilder besser verwalten kann und außerdem sicherstellen kann, dass die Bilder und die Benutzeroberfläche gleichzeitig angezeigt werden, wodurch der Nachteil vermieden wird, dass Bilder lange nach dem Öffnen des Fensters angezeigt werden angezeigt.
Die spezifischen Schritte sind wie folgt:
1. Erstellen Sie ein neues Projekt, nennen Sie es JSpleshWindowDemo und behalten Sie die anderen Einstellungen als Standard bei.
2. Erstellen Sie eine neue Anwendung, nennen Sie sie JSpleshWindowDemo, benennen Sie das Hauptfenster MainFrame und benennen Sie den Titel des Hauptfensters JSpleshWindowDemo.
3. Schreiben wir zunächst den Code für das Informationsfenster. Erstellen Sie eine neue Klasse SpleshWindow.java, die die Klasse java.swing.JWindow erbt. Definieren Sie in der SpleshWindow-Klasse neue Eigenschaften mit dem folgenden Code:
private String statusStr=null; //Informationen, die im Informationsfenster angezeigt werden sollen private Image logoImg=null; //Bild im Informationsfenster anzeigen
4. Fügen Sie der Konstruktionsmethode Code hinzu, laden Sie das Bild und initialisieren Sie das Formular. Der Implementierungscode lautet wie folgt:
public SpleshWindow(JFrameowner) { //Nehmen Sie das JFrame-Objekt als Parameter, das die Interaktion zwischen dem Informationsfenster und dem Hauptfenster sein kann super(owner); // Laden Sie das Bild logoImg=getToolkit().getImage( ClassLoader. getSystemResource("images/splesh.jpg ") );//Warten Sie, bis das Bild geladen ist java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); //Erstelle ein MediaTracker-Objekt tracker.addImage( logoImg , 0 ); //Füge das Bild in das MediaTracker-Objekt mit der Seriennummer 0 ein try{ //Warten Sie, bis das Bild geladen ist tracker.waitForAll();}catch ( InterruptedException e ) {e .printStackTrace();}//Legen Sie die Anzeigeposition des Informationsformulars auf dem Bildschirm fest setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -logoImg.getHeight(this)/2 );setSize( logoImg.getWidth(this ), logoImg.getHeight(this) ); // Fenstergröße festlegen}5. Schreiben Sie eine Methode zum Festlegen der Anzeigeinformationen. Der Code lautet wie folgt:
public void setStatus( String status ){statusStr=status;paint( getGraphics() ); // Fenster neu zeichnen, um die Anzeigeinformationen im Informationsfenster zu aktualisieren}6. Setzen Sie die Methode paint() zurück, um Bilder zu zeichnen und Informationen anzuzeigen. Der Code lautet wie folgt:
public void paint(Graphics g) {/**@todo Überschreibe diese java.awt.Component-Methode*/super.paint(g);//Zeichne das Bild if (logoImg!=null)g.drawImage( logoImg, 0, 0 , this );//Informationen zeichnen und anzeigen if ( statusStr!=null ){g.setColor(Color.red);g.drawString( statusStr , 240, getSize().height-250 );}}7. Schreiben Sie die MainFrame-Klasse, implementieren Sie die java.lang.Runnable-Schnittstelle und definieren Sie neue Attribute. Die Einstellungen lauten wie folgt:
private SpleshWindow spleshWindow=null;
8. Fügen Sie den Code zum Ausführen des Informationsfensters zur Initialisierungsmethode der MainFrame-Klasse hinzu. Der Implementierungscode lautet wie folgt:
private void jbInit() löst eine Ausnahme aus {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Ihr Symbol]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);this.setSize(new Dimension(400, 300));this.setTitle("JSpleshWindowDemo");//Erstellen Sie einen neuen Thread und führen Sie das Informationsfenster aus Thread t = new Thread(this);t.start();//Warten Sie, bis das Informationsfenster angezeigt wird try{ t.join( );}catch ( InterruptedException e ){e.printStackTrace() ;}// Meldung im Informationsfenster anzeigen long x=System.currentTimeMillis();while ( System.currentTimeMillis()-x <35000 ){System.out.print( "Waiting "+(35000-System.currentTimeMillis()+x+" /r") );// Sie können die Statuszeichenfolge in Splash WindowspleshWindow.setStatus festlegen ("Warten "+(35-(long)(System.currentTimeMillis()/1000)+(long)(x/1000)) );}//Schließe das Informationsfenster if ( spleshWindow!=null ) {spleshWindow.dispose();spleshWindow=null;}}9. Schreiben Sie die run()-Methode der MainFrame-Klasse wie folgt:
public void run() {//Neues Informationsfenster erstellen und anzeigen spleshWindow=new SpleshWindow( this );spleshWindow.show();// throw new java.lang.UnsupportedOperationException("Methode run() noch nicht implementiert.") ;}