IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NetBeans Java Discussion :

Intégrer un SplashScreen à une application Java avec NetBeans


Sujet :

NetBeans Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 52
    Par défaut Intégrer un SplashScreen à une application Java avec NetBeans
    Bonjour,

    J'ai un programme qui fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
           public class JeuCEP extends javax.swing.JFrame {
             // Constructeur
             public JeuCEP() {...
    Dans lequel j'essaie d'inclure un code pour intégrer un SplashScreen, qui fonctionne très bien lui aussi mais à part.

    Je me base sur le tutoriel sous NetBeans http://wiki.netbeans.org/Splash_Scre...inner_Tutorial qui fait exactement tout ce que je veux mais je ne suis pas capable de l'intégrer dans mon programme JeuCEP.

    Quelqu'un saurait-il m'indiquer comment faire en sorte que ça fonctionne ?

    Merci d'avance pour votre aide.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ce serait bien que tu commence par nous montrer ce que tu as essayé de faire ainsi que ce qui coince.

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 52
    Par défaut
    Si je teste et compile le tutoriel, tout va bien et tout s'affiche correctement.

    Quand mon programme principal est compilé, tout fonctionne aussi correctement.

    Le tutoriel est une classe main et je sais (du moins, de ce que j'ai compris jusqu'ici) qu'on ne peut pas avoir deux classes Main dans un même programme.

    Ce que je tente de faire est un simple new splashScreen();... dans mon programme principal pour créer cette instance mais ça ne fonctionne pas.

    C'est le bout où une classe est créée (splashScreen) et qu'il faut l’appeler dans le programme principal qui n'est pas clair.
    Le compilateur me donne des choix comme créer une méthode etc...

    J'ai beau essayer tout ce que le compilateur me suggère mais ça ne fonctionne pas.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Montre-nous ton code, je vais pas deviner comment tu as intégré les deux et où ça coince.

  5. #5
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2013
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 52
    Par défaut
    Ma classe EcranDepart
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.SplashScreen;
    import java.awt.geom.Rectangle2D;
     
    /**
     * Example for Splash Screen tutorial
     * @author Joseph Areeda
     */
    public class EcranDepart
    {
        static SplashScreen mySplash;                   // instantiated by JVM we use it to get graphics
        static Graphics2D splashGraphics;               // graphics context for overlay of the splash image
        static Rectangle2D.Double splashTextArea;       // area where we draw the text
        static Rectangle2D.Double splashProgressArea;   // area where we draw the progress bar
        static Font font;                               // used to draw our text
     
        public static void EcranDepart(String[] args)
        {
            splashInit();           // initialize splash overlay drawing parameters
            appInit();              // simulate what an application would do before starting
            if (mySplash != null)   // check if we really had a spash screen
                mySplash.close();   // we're done with it
     
            // begin with the interactive portion of the program
        }
        /**
         * just a stub to simulate a long initialization task that updates
         * the text and progress parts of the status in the Splash
         */
        private static void appInit()
        {
            for (int i = 1; i <= 10; i++)
            {   // pretend we have 10 things to do
                int pctDone = i * 10;       // this is about the only time I could calculate rather than guess progress
                splashText("Chargement du programme. Attendez...");     // tell the user what initialization task is being done
                splashProgress(pctDone);            // give them an idea how much we have completed
                try
                {
                    Thread.sleep(1500);             // wait a second
                }
                catch (InterruptedException ex)
                {
                    break;
                }
            }
        }
     
        /**
         * Prepare the global variables for the other splash functions
         */
        private static void splashInit()
        {
            // the splash screen object is created by the JVM, if it is displaying a splash image
     
            mySplash = SplashScreen.getSplashScreen();
            // if there are any problems displaying the splash image
            // the call to getSplashScreen will returned null
     
            if (mySplash != null)
            {
                // get the size of the image now being displayed
                Dimension ssDim = mySplash.getSize();
                int height = ssDim.height;
                int width = ssDim.width;
     
                // stake out some area for our status information
                splashTextArea = new Rectangle2D.Double(563., height*0.85, width * .20, 32.);
                splashProgressArea = new Rectangle2D.Double(width * .55, height*.92, width*.4, 12 );
     
                // create the Graphics environment for drawing status info
                splashGraphics = mySplash.createGraphics();
                font = new Font("Dialog", Font.PLAIN, 10);
                splashGraphics.setFont(font);
     
                // initialize the status info
              splashText("Chargement");
                splashProgress(0);
            }
        }
        /**
         * Display text in status area of Splash.  Note: no validation it will fit.
         * @param str - text to be displayed
         */
        public static void splashText(String str)
        {
            if (mySplash != null && mySplash.isVisible())
            {   // important to check here so no other methods need to know if there
                // really is a Splash being displayed
     
                // erase the last status text
                splashGraphics.setPaint(Color.RED);
                splashGraphics.fill(splashTextArea);
     
                // draw the text
                splashGraphics.setPaint(Color.BLACK);
                splashGraphics.drawString(str, (int)(splashTextArea.getX() + 10),(int)(splashTextArea.getY() + 15));
     
                // make sure it's displayed
                mySplash.update();
            }
        }
        /**
         * Display a (very) basic progress bar
         * @param pct how much of the progress bar to display 0-100
         */
        public static void splashProgress(int pct)
        {
            if (mySplash != null && mySplash.isVisible())
            {
     
                // Note: 3 colors are used here to demonstrate steps
                // erase the old one
                splashGraphics.setPaint(Color.LIGHT_GRAY);
                splashGraphics.fill(splashProgressArea);
     
                // draw an outline
                splashGraphics.setPaint(Color.BLUE);
                splashGraphics.draw(splashProgressArea);
     
                // Calculate the width corresponding to the correct percentage
                int x = (int) splashProgressArea.getMinX();
                int y = (int) splashProgressArea.getMinY();
                int wid = (int) splashProgressArea.getWidth();
                int hgt = (int) splashProgressArea.getHeight();
     
                int doneWidth = Math.round(pct*wid/100.f);
                doneWidth = Math.max(0, Math.min(doneWidth, wid-1));  // limit 0-width
     
                // fill the done part one pixel smaller than the outline
                splashGraphics.setPaint(Color.RED);
                splashGraphics.fillRect(x, y+1, doneWidth, hgt-1);
     
                // make sure it's displayed
                mySplash.update();
            }
        }
    }
    Le code où j'introduis l'appel à ma classe dans mon programme principal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
     
    // La classe Message hérite des comportements d'une JFrame
    public class JeuCEP extends javax.swing.JFrame {
     
        // Constructeur
        public JeuCEP() {
            // Afficher la boite de bienvenue et explications
            new EcranDepart();       // Ici je tente d'afficher mon écran de départ mais ça ne fonctionne pas.
     
    //        setBounds(0,0,1024,724);        // Positionner et donner une taille à la fenêtre
            initComponents();                // Placer et afficher les composants créés depuis le mode Design
    J'essaie de garder la classe EcranDepart comme une classe externe (pour plus de lisibilité) mais le compilateur me suggère plutôt de la mettre comme une méthode.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Quand tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new EcranDepart(); // Ici je tente d'afficher mon écran de départ mais ça ne fonctionne pas.
    tu crées une instance de EcranDepart, ce qui a pour effet d'exécuter le constructeur de cette classe, mais pas la méthode public static void EcranDepart(String[] args), ou tu as mis tout ton code.

    Donc au lieu de faire new EcranDepart() dans JeuCEP, appelles juste la méthode qui fait le code que tu veux faire, donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EcranDepart.EcranDepart(new String[0]/* paramètre inutilisé */);
    Bon, je pense que tu devrais virer le paramètre String[] args de ta méthode : tu l'as parce que tu as pris l'exemple du tuto de Oracle, qui faisait le code dans la méthode main. Mais ces paramètres ne sont pas utiles : donc autant les virer, plutôt que d'être obligé de passer quelque chose, qui ne sert pas.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

Discussions similaires

  1. Intégrer JasperReport dans une application Java
    Par jasmine22 dans le forum Jasper
    Réponses: 1
    Dernier message: 01/08/2012, 08h38
  2. connecter une application java avec une bd access
    Par laminou19 dans le forum JDBC
    Réponses: 1
    Dernier message: 16/04/2011, 22h43
  3. generer l'exe d'une application java avec JavaExe
    Par ammouna8888 dans le forum Persistance des données
    Réponses: 1
    Dernier message: 13/07/2010, 16h26
  4. [débutante]Intégrer flash dans une application java
    Par bouba83 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 11/05/2006, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo