Splah screen

romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014 - 6 juin 2008 à 08:45
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 6 juin 2008 à 20:47
Bonjour,

J'aimerais faire un Splash Screen avant l'ouverture de mon programme, j'ai deja fait l'image de ce splash screen. donc jai trouvé une source mais je ne vois comment l'integrer a mon code

************************************************************************************************

Voici une classe qui peux vous etre utilile si vous désirez afficher un splash screen ( écran de démarrage ) en swing.

Cette classe prend en parametres le nom du fichier image que vous voulez afficher, la frame qui va s'afficher, et le temps jusqu'a ce quelle soit rendue invisble.
Deux thread sont lancé :
<li>un qui attend le temps voulu pour l'affichage du splash screen, puis qui lance le second thread
</li><li>l'autre qui rend invisible la frame
</li>
package main;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Toolkit;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JWindow;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial") class SplashWindow extends JWindow {
   
   
public SplashWindow(String filename, Frame f, int waitTime) {
        super(f);
        //cree un label avec notre image
        JLabel l = new JLabel(new ImageIcon(filename));
        //ajoute le label au panel
        getContentPane().add(l, BorderLayout.CENTER);
        pack();
       
        //centre le splash screen
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension labelSize = l.getPreferredSize();
        setLocation(screenSize.width / 2 - (labelSize.width / 2),
                screenSize.height / 2 - (labelSize.height / 2));
       
        //rend le splash screen invisible lorsque l'on clique dessus
        addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent e) {
                setVisible(false);
                dispose();
            }
        });
       
        //afin d'acceder à la valeur WaitTime
        final int pause = waitTime;
       
        //thread pour fermer le splash screen
        final Runnable closerRunner = new Runnable() {
            public void run() {
                setVisible(false);
                dispose();
            }
        };
       
       
        Runnable waitRunner = new Runnable() {
            public void run() {
                try {
                    Thread.sleep(pause);
                    //lance le thread qui ferme le splash screen
                    SwingUtilities.invokeAndWait(closerRunner);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
       
        //affiche le splash screen
        setVisible(true);
       
        //lance le thread qui ferme le splash screen apres un certain temps
        Thread splashThread = new Thread(waitRunner, "SplashThread");
        splashThread.start();
    }

-----------------------------------------------------------------------------------------------
                                   Voici mon code
-----------------------------------------------------------------------------------------------

import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Bisson extends JFrame implements MouseListener
{

private static final long serialVersionUID =1L;

/*************************** Déclarations Champs de Texte
*******************************/

static JTextField zone_nom;
static JTextField zone_prenom;
static JTextField zone_adresse;
static JTextField zone_code_postal;
static JTextField zone_ville;
static JTextField zone_telephone;

/***********************************Déclarations Boutons
********************************/

static JButton bouton_facture;
static JButton bouton_devis;
static JButton bouton_commande;

/********************************* Etiquette - Label - Image
******************************/

static JLabel logo;
static JLabel version;
static JLabel facture;
static JLabel devis;
static JLabel commande;

/*************************************    Image de fond   
*******************************/
static Image fond;

//
**************************************************************************************
//                               PREMIER CONSTRUCTEUR
//
**************************************************************************************

public Bisson(){

                //On donne un titre à la fenetre
                                super("Bisson Informatique");

                //Cette opération est réalisé lors de la fermeture de la fenetre
                                setDefaultCloseOperation(DISPOSE_ON_CLOSE);

                //Taille de la fenetre 1024*768
                                setBounds(0,0,1024,768);

                //La fenetre n'est pas redimensionable
                                setResizable(false);

                        ImageIcon icon = new ImageIcon("images/logo.jpg");
                        logo = new JLabel();
                        logo.setIcon(icon);
                        logo.setBounds(40,250,450,300);

                /**** bouton facture *****/

                         bouton_facture = new JButton();
                         bouton_facture.setIcon(new ImageIcon("images/icone.gif"));
                         bouton_facture.setBounds(100,50,120,120);

                         facture = new JLabel("Facture");
                         facture.setForeground(Color.blue);
                         facture.setFont(new Font("Helvetica", Font.PLAIN, 20));
                         facture.setBounds(130,170,80,40);

                /**** bouton devis *****/

                         bouton_devis = new JButton();
                         bouton_devis.setIcon(new ImageIcon("images/icone.gif"));
                         bouton_devis.setBounds(300,50,120,120);

                         devis = new JLabel("Devis");
                         devis.setForeground(Color.blue);
                         devis.setFont(new Font("Helvetica", Font.PLAIN, 20));
                         devis.setBounds(335,170,80,40);

                /**** bouton commande *****/

                         bouton_commande = new JButton();
                         bouton_commande.setIcon(new ImageIcon("images/icone.gif"));
                         bouton_commande.setBounds(500,50,120,120);

                         commande = new JLabel("Commande");
                         commande.setForeground(Color.blue);
                         commande.setFont(new Font("Helvetica", Font.PLAIN, 20));
                         commande.setBounds(510,170,120,40);

                         version = new JLabel("Version 1.0");
                         version.setForeground(Color.blue);
                     version.setFont(new Font("Helvetica", Font.PLAIN, 28));
                     version.setBounds(870,700,200,50);

                         setResizable(false);

                          //création du container
                          JLabel container = new JLabel();
                          // chargement de l'image
                          ImageIcon background = new ImageIcon("images/fond.jpg");
                          //on s'assure que l'image soit bien chargée
                          background.getImage();
                          // charge l'image
                          container.setIcon(background);
                          //changement du layout (pour reprendre ce que tu as fait
                          container.setLayout(null);
                          //ajout des composants
                          container.add(bouton_facture);
                          container.add(facture);
                          container.add(bouton_devis);
                          container.add(devis);
                          container.add(bouton_commande);
                          container.add(commande);
                          container.add(logo);
                          container.add(version);
                          //ajout du container
                          setContentPane(container);

                          bouton_facture.addMouseListener(this);
                          bouton_devis.addMouseListener(this);
                          bouton_commande.addMouseListener(this);

                //On rend la fenetre lisible
                        setVisible(true);
                }

public void mouseClicked(MouseEvent e) {}

//Invoked when a mouse button has been pressed on a component.
public void mousePressed(MouseEvent e) {}

//Invoked when a mouse button has been released on a component.
public void mouseReleased(MouseEvent e) {}

//Invoked when the mouse enters a component.
public void mouseEntered(MouseEvent e) {}

//Invoked when the mouse exits a component.
public void mouseExited(MouseEvent e) {}

//Permet l'execution du programme
public static void main(String[] args){

        new Bisson();

        }

}

9 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 juin 2008 à 08:55
Salut:

Java 1.6 intégre la classe SpalshScreen, qui a l'apport de se lancer au démarrage de l'application avant même que la JVM démarre.

Référence: (Documentation Java 1.6)
"The splash screen can be created at application startup, before the Java Virtual
Machine (JVM) starts. The splash screen is displayed as an undecorated window
containing an image."
0
romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014
6 juin 2008 à 08:58
ça a l'air bien cette classe mais on l'utilise comment ?
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 juin 2008 à 09:30
Salut:

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/
java.sun.com/javase/6/<wbr>docs/api/java/awt/SplashScreen.html</wbr>
0
romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014
6 juin 2008 à 10:08
Ok, 

moi je veux juste que le programme prenne une image dans image/splah.jp et ensuite l'affiche pendant 5s aux dimensions 400*400 avant mon programme, car je conprend rien a ton lien, je pense que c'est tro compliqué pour ce que je veux faire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 juin 2008 à 14:13
Salut:

En fait c'est simple.

import java.awt.SplashScreen;

import java.awt.event.ComponentListener;
import java.awt.event.ComponentEvent;

import javax.swing.JFrame;

public class DemoSplashScreen extends JFrame implements ComponentListener {   
    public DemoSplashScreen() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(400, 400);
        setTitle("SplashScreen");
        addComponentListener(this);
    }
   
    @Override
    public void componentHidden(ComponentEvent e) {}
    
    @Override
    public void componentMoved(ComponentEvent e) {}

    @Override
     public void componentResized(ComponentEvent e) {}
    
    @Override
    public void componentShown(ComponentEvent e) {
        SplashScreen ss = SplashScreen.getSplashScreen();
        if (ss != null) {
            ss.close();
        }
    }

    public static void main(String[] args) {
        DemoSplashScreen demo = new DemoSplashScreen();
        demo.setVisible(true);
    }
}
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 juin 2008 à 14:15
Salut:

J'ai oublié d'ajouter ceci: (Remplace image.png par le nom excate de ton fichier image.)

C:\>javac DemoSplashScreen.java

C:\>java -splash:image.png DemoSplashScreen
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 juin 2008 à 14:20
Salut:

Au cas où la classe SplashScreen ne te satisfait pas, tu peux utiliser l'API open-source Zeus

Zeus:
http://sourceforge.net/projects/zeus-jscl/
0
romainbisson Messages postés 88 Date d'inscription jeudi 25 octobre 2007 Statut Membre Dernière intervention 9 septembre 2014
6 juin 2008 à 14:26
ok, sa a l'air cool mais je vourdais l'integrer a mon programma que j'ai poster et je compile avec esclipse donc je n'ai de ligne de commande, il doit connaitre le fichier tout seul
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 juin 2008 à 20:47
Salut:

Il suffit de suivre cet démarche:

1. Dérouler le menu contextuel en faisant un click droit sur la classe principale de ton projet (celle qui contient le main())

2. Run As

3. Open Run Dialog

4. Double-click sur noeud Java Application

5. Séléctionner l'onglet Arguments

6. Dans la zone de saisie VM arguments ajoutes cette ligne:  -splash:image.png
0
Rejoignez-nous