Cet article détaille l'effet de la fenêtre de démarrage de Java lorsqu'un programme est en cours d'exécution, tel que Microsoft Word, Borland JBuilder, etc. couramment utilisés. Ces fenêtres sont appelées fenêtres d'informations. L'avantage d'utiliser la fenêtre d'information est que l'utilisateur peut connaître l'état de fonctionnement du logiciel pendant un certain temps avant d'attendre que l'interface principale du logiciel apparaisse. Cet exemple montrera comment implémenter une fenêtre d'informations. Lorsque le programme est ouvert, la fenêtre d'informations s'affiche en premier et compte à rebours jusqu'à "attendre 0", puis la fenêtre est fermée et la fenêtre principale du programme est affichée.
Les principales modalités de mise en œuvre de cette fonction sont les suivantes :
D'une manière générale, la plupart des fenêtres d'informations n'ont pas de barre de titre, donc la fenêtre d'informations ne peut pas être implémentée en héritant de la classe JFrame. Un moyen simple consiste à l'implémenter en héritant de la classe JWindow (bien sûr, hériter de la classe Window est également possible, mais un principe est d'essayer d'utiliser les classes d'interface dans Swing). De plus, cet exemple utilise la classe MediaTracker dans le package java.awt. L'avantage d'utiliser cette classe est qu'elle peut mieux gérer les images à utiliser dans le programme, et elle peut également garantir que les images et l'interface sont affichées en même temps, évitant ainsi l'inconvénient d'afficher les images longtemps après l'ouverture de la fenêtre. affiché.
Les étapes spécifiques sont les suivantes :
1. Créez un nouveau projet, nommez-le JSpleshWindowDemo et conservez les autres paramètres par défaut.
2. Créez une nouvelle application, nommez-la JSpleshWindowDemo, nommez la fenêtre principale MainFrame et nommez le titre de la fenêtre principale JSpleshWindowDemo.
3. Écrivons d’abord le code de la fenêtre d’informations. Créez une nouvelle classe SpleshWindow.java, qui hérite de la classe java.swing.JWindow. Dans la classe SpleshWindow, définissez de nouvelles propriétés avec le code suivant :
private String statusStr=null; //Informations à afficher dans la fenêtre d'informations private Image logoImg=null; //Afficher l'image dans la fenêtre d'informations.
4. Ajoutez du code à la méthode de construction, chargez l'image et initialisez le formulaire. Le code d'implémentation est le suivant :
public SpleshWindow(JFrameowner) { //Prendre l'objet JFrame comme paramètre, qui peut être l'interaction entre la fenêtre d'information et la fenêtre principale super(owner); // Charger l'image logoImg=getToolkit().getImage( ClassLoader. getSystemResource("images/splesh.jpg ") );//Attendez que l'image soit chargée java.awt.MediaTracker tracker=new java.awt.MediaTracker( this ); //Créez un objet MediaTracker tracker.addImage( logoImg , 0 ); //Placez l'image dans l'objet MediaTracker avec le numéro de série 0 try{ //Attendez que l'image soit chargée tracker.waitForAll();}catch ( InterruptedException e ) {e .printStackTrace();}//Définir la position d'affichage du formulaire d'information sur l'écran setLocation( getToolkit().getScreenSize().width/2 - logoImg.getWidth(this)/2 , getToolkit().getScreenSize().height/2 -logoImg.getHeight(this)/2 );setSize( logoImg.getWidth(this ), logoImg.getHeight(this) ); // Définir la taille de la fenêtre}5. Écrivez une méthode pour définir les informations d'affichage. Le code est le suivant :
public void setStatus( String status ){statusStr=status;paint( getGraphics() ); // Redessine la fenêtre pour mettre à jour les informations d'affichage dans la fenêtre d'informations}6. Réinitialisez la méthode paint() pour dessiner des images et afficher des informations. Le code est le suivant :
public void paint(Graphics g) {/**@todo Remplacez cette méthode java.awt.Component*/super.paint(g);//Dessinez l'image if (logoImg!=null)g.drawImage( logoImg, 0, 0 , this );//Dessiner et afficher des informations if ( statusStr!=null ){g.setColor(Color.red);g.drawString( statusStr , 240, getSize().hauteur-250 );}}7. Écrivez la classe MainFrame, implémentez l'interface java.lang.Runnable et définissez de nouveaux attributs. Les paramètres sont les suivants :
SpleshWindow privé spleshWindow=null ;
8. Ajoutez le code d'exécution de la fenêtre d'information à la méthode d'initialisation de la classe MainFrame. Le code d'implémentation est le suivant :
private void jbInit() lève une exception {//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Votre icône]")));contentPane = (JPanel) this.getContentPane();contentPane.setLayout (borderLayout1);this.setSize(nouvelle Dimension(400, 300));this.setTitle("JSpleshWindowDemo");//Créez un nouveau thread et exécutez la fenêtre d'informations Thread t = new Thread(this);t.start();//Attendez que la fenêtre d'informations s'affiche try{ t.join( );}catch ( InterruptedException e ){e.printStackTrace() ;}// Afficher le message dans la fenêtre d'information long x=System.currentTimeMillis();while ( System.currentTimeMillis()-x <35000 )(System.out.print( "Waiting "+(35000-System.currentTimeMillis()+x+" /r") );// vous pouvez définir la chaîne d'état dans splash windowspleshWindow.setStatus ( "En attente "+(35-(long)(System.currentTimeMillis()/1000)+(long)(x/1000)) );}//Fermez la fenêtre d'informations if ( spleshWindow!=null ) {spleshWindow.dispose();spleshWindow=null;}}9. Écrivez la méthode run() de la classe MainFrame comme suit :
public void run() {//Créez une nouvelle fenêtre d'informations et affichez spleshWindow=new SpleshWindow( this );spleshWindow.show();// throw new java.lang.UnsupportedOperationException("Method run() pas encore implémentée.") ;}