Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Splah screen [ Divers / Général ] (romainbisson)

vendredi 6 juin 2008 à 08:45:05 | Splah screen

romainbisson

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é :
  • un qui attend le temps voulu pour l'affichage du splash screen, puis qui lance le second thread
  • l'autre qui rend invisible la frame


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();

        }

}


vendredi 6 juin 2008 à 08:55:20 | Re : Splah screen

Ombitious_Developper

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."




vendredi 6 juin 2008 à 08:58:59 | Re : Splah screen

romainbisson

ça a l'air bien cette classe mais on l'utilise comment ?

vendredi 6 juin 2008 à 09:30:08 | Re : Splah screen

Ombitious_Developper

Salut:

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/
java.sun.com/javase/6/docs/api/java/awt/SplashScreen.html


vendredi 6 juin 2008 à 10:08:59 | Re : Splah screen

romainbisson

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

vendredi 6 juin 2008 à 14:13:04 | Re : Splah screen

Ombitious_Developper

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);
    }
}




vendredi 6 juin 2008 à 14:15:14 | Re : Splah screen

Ombitious_Developper

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



vendredi 6 juin 2008 à 14:20:32 | Re : Splah screen

Ombitious_Developper

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/

vendredi 6 juin 2008 à 14:26:06 | Re : Splah screen

romainbisson

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

vendredi 6 juin 2008 à 20:47:50 | Re : Splah screen

Ombitious_Developper

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



Cette discussion est classé dans : bouton, static, jlabel, import, facture


Répondre à ce message

Sujets en rapport avec ce message

Probleme JFrame [ par romainbisson ] Bonjour je souhaite effacer le contenut de ma Jframe et lors de l'action sur un bouton, je souhaite qu'elle soit redessiner mais je ne sais pas commen probleme avec le drag and drop [ par Nayra ] Bonsoir à tous,alors je vous présente ce code :[B]import java.awt.Event;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import ja probleme d'affichage de mon applet [ par limalima ] Bonjour à tous, j'ai commencé à apprendre les applets, je pensais que c'était simple mais je me rend compte que finalement j'y pas capté grand chose: probleme de log avec l api log4j [ par hamster007 ] bonjour à tous; voila mon logger marche bien lorsque que je l'utilise d'un main de test, mais des que je l insere dans mon appli (sous eclipse) ben Problème suppression élément xml [ par bidule7 ] Bonjour, j'ai écrit un code pour supprimer un élément dans un fichier XML. Ce code fonctionne, oui....mais qu'une seule fois. Si je le lance, ça me su JDesktop et JInternalFrame [ par Nico33411 ] Bonjour à tousJ'ai actuellement un soucis avec mes JInternalFrame, j'ai une Frame qui contient un JDesktopPane, je peux créer des JInternalFrame je le l'exposant en java ? [ par CHKDSK2K ] Bonjour quand je fait nbre1 = nbre1 + 2; cela fonctionne bien aucun probleme alors que quand je fait nbre1 = nbre1^2 il ne fait rien pq ? import java. là, ça m'echappe!!!!!!! [ par othland ] salut tout le monde!toujours avec le pb d'affichage d'un fichier texte (qui setrouve dans le disque dur) dane un champs de texte!je vous donne ma sour Bouton créant un bouton [ par kanagan ] Bonjour, Voilà, j'ai un petit problème, je veux créer un bouton qui, lorsque l'on clique dessus, crée un autre bouton. Cependant je n'arrive pas à af


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.