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

AWT/Swing Java Discussion :

SplashScreen en JDK 1.4


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut SplashScreen en JDK 1.4
    Bonjour,
    Je souhaiterai afficher une splashscreen à l'ouverture de mon application (SWING en JDK 1.4).
    Pour cela j'ai récupéré une classe SplashScreen sur le net :

    http://examples.oreilly.com/jswing2/...ashScreen.java
    que j'ai un peu bidouillé, cf ci-dessous.

    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
     
     
    public class SplashScreen extends JWindow{
      private int duration;
      public SplashScreen(int d) {
        duration = d;
      }
     
      // A simple little method to show a title screen in the center
      // of the screen for the amount of time given in the constructor
      public void showSplash() {
        JPanel content = (JPanel)getContentPane();
        content.setBackground(Color.white);
     
        // Set the window's bounds, centering the window
        int width = 450;
        int height =300;
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (screen.width-width)/2;
        int y = (screen.height-height)/2;
        setBounds(x,y,width,height);
     
        // Build the splash screen
        //JLabel label = new JLabel(new ImageIcon("oreilly.gif"));
        JLabel lab = new JLabel("veuillez patientez");
        JLabel copyrt = new JLabel
          ("Copyright 2002, O'Reilly & Associates", JLabel.CENTER);
        copyrt.setFont(new Font("Sans-Serif", Font.BOLD, 12));
        //content.add(label, BorderLayout.CENTER);
        content.add(copyrt);
        content.add(lab);
     
        Color oraRed = new Color(156, 20, 20,  255);
        content.setBorder(BorderFactory.createLineBorder(oraRed, 10));
     
        // Display it
        setVisible(true);
     
        // Wait a little while, maybe while loading resources
    //    try { Thread.sleep(duration); } catch (Exception e) {}
    //
    //    setVisible(false);
      }
     
      public void showSplashAndExit() {
        showSplash();
        //System.exit(0);
      }
     
      public static void main(String[] args) {
        // Throw a nice little title page up on the screen first
        SplashScreen splash = new SplashScreen(10000);
        // Normally, we'd call splash.showSplash() and get on with the program.
        // But, since this is only a test...
        splash.showSplashAndExit();
      }
    }
    Mais j'ai du mal à l'intégrer dans mon code (simplifié) ci-dessous.
    Ma splashScreen ne s'affiche pas....Est-ce parce qu'elle hérite de JWindow alors que mon application de JFrame ? L'idée étant que la Splash screen se ferme lorsque mon long traitement est terminé !


    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
     
     
    public class MailingPlus extends JFrame {
     
    // constructeur
    public MonApplication() {
     
     .....//Traitements longs
    }
     
    public static void main2(String[] args) {
    		// 
    	SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
     
    				Date date = new Date();
     
    				SplashScreen splash = new SplashScreen(1);
    				splash.showSplash();
     
    				MailingPlus thisClass = new MailingPlus();
     
    				thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    				thisClass.setResizable(false);
     
    				splash.setVisible(false);
     
    				thisClass.setVisible(true);
     
    			}
    		});
     
    }
    }
    Quelqu'un a -t-il une idée pourquoi je n'arrive pas à afficher ma JWindow ? si je remplace par 'SplashScreen extends JFrame", ca fonctionne mais c'est pas beau....

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 40
    Par défaut
    Bon, ca n'interesse personne ?

  3. #3
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    regarde sur developpez ya deja un source de splashScreeen

    inspire t'en pour corriger tes erreurs
    Splash

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Tu crees, affiches ton splash, initialise et affiche ton application puis caches ton splash screen dans une meme bouche d'EDT (c'est a dire entre deux reaffichages). Il est donc normal que rien ne s'y affiche.

    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
     
    public class MailingPlus extends JFrame {
     
    // constructeur
    public MonApplication() {
      .....//Traitements longs
    }
     
    public static void main2(String[] args) {
    // 
      SwingUtilities.invokeLater(new Runnable() {
        public void run() {
          Date date = new Date();
          final SplashScreen splash = new SplashScreen(1);
          splash.showSplash();
          SwingUtilities.invokeLater(new Runnable() {
            public void run() {
              MailingPlus thisClass = new MailingPlus();
              thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              thisClass.setResizable(false);
              splash.setVisible(false);  
              thisClass.setVisible(true);
           }
         });
       });
    }
    }
    Tu peux essayer comme ca MAIS si l'initialisation de MailingPlus est vraiment tres longue, tu peux ne pas arriver a voir la fenetre non plus ET/OU comme l'EDT est bloquee sur l'initialisation de la classe, le rafraichissement du splash ne se fera plus (par exemple si tu le recouvre partiellement avec une autre fenetre).

    Bref, il te faut egalement voir si tu ne peux pas rajouter des invokeLater() (pour l'initialisation des objets graphiques) ou un initialisation dans une Thread separee (dans le cas de creation d'objets non-graphiques) dans le constructeur de MailingPlus.

    EDIT - tu peux aussi imposer un temps d'attente de quelques millisecondes avec un Timer Swing histoire d'etre sur que l'image veuille bien s'afficher.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. changer de jdk
    Par Celeborn dans le forum Java ME
    Réponses: 2
    Dernier message: 11/06/2009, 20h33
  2. [Concept][Définition] Différence entre JDK et SDK
    Par mr-casimir dans le forum Général Java
    Réponses: 5
    Dernier message: 25/05/2004, 12h23
  3. [opentool][JDK]Changer le JDK d'un projet ss wizard
    Par Mobaladje dans le forum JBuilder
    Réponses: 8
    Dernier message: 03/05/2004, 14h37
  4. [Débutant] Version de jdk
    Par lapartdombre dans le forum Eclipse Java
    Réponses: 17
    Dernier message: 28/04/2004, 11h28
  5. [TOMCAT]JDk-1.2. et Tomcat-4.2
    Par itsmii dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 05/09/2003, 11h26

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