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 :

Splash qui dépend de chargement


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut Splash qui dépend de chargement
    Salut tout le monde,

    j'ai essayé de faire un Splash Screen pour une application ,

    voilà le code :

    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 Splash extends JFrame{
     
    	private	JProgressBar progressBar;
     
      public Splash(String file){ 
     
    	    JLabel img=new JLabel(new ImageIcon(file));
    	    this.getContentPane().add(img, BorderLayout.CENTER);      
    	    progressBar=new JProgressBar();
    		progressBar.setStringPainted(true);
            progressBar.setIndeterminate(true);
            progressBar.setPreferredSize(new Dimension(556,15));
        	JPanel panProgress=new JPanel();
        	panProgress.setLayout(new BorderLayout());
        	panProgress.add(progressBar,BorderLayout.CENTER);
     
        	panProgress.setBounds(195,275,400,10);
     
        	this.getContentPane().add(panProgress,BorderLayout.SOUTH);
     
        	this.setSize(626,330);
        	this.setLocationRelativeTo(null);
        	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
        	final int pause = 5000;         
            // 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      
                 this.setVisible(true);           
                //lance le thread qui ferme le splash screen apres un certain temps        
                  Thread splashThread = new Thread(waitRunner, "SplashThread");    
                  splashThread.start();    
     
     
        }
     
     
    }
    comme vous voyez le splash s'affiche pour un nombre de millisecondes données , la question c'est comment je peut le lier au chargement de l'application

  2. #2
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 051
    Par défaut
    Salut,

    Comment le lancer ou comment gérer le pourcentage de la barre de progression ?

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    salut visiwi, merci pour votre réponse ,

    en fait je veus que la gestion de pourcentage de la barre de progresssion depend de chargement de l'application

  4. #4
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 051
    Par défaut
    Cela dépend de ce que tu charge.

    Si tu es capable de connaitre le nombre total d'octets chargés, c'est cela qui détermine le max de ta progressbar, puis a chaque octets (ou régulièrement) tu met a jour la value de ta progressbar.

    Si tu ne peut pas suivre cette voie, tu peux arbitrairement, déterminer la progression. par exemple, tu as 20 fichiers à charger, 20 détermine le max de ta progressbar, puis a chaque fichiers tu met a jour la value de ta progressbar.

    Je ne vois que ça, mais peut-être y a t-il d'autre solution...

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    merci
    j'ai trouvé comment Comment connaître la mémoire utilisable de la carte graphique dans la FAQ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // obtenir le type d'environnement graphique sous lequel tourne la JVM
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    // optenir le périphérique d'affichage (carte graphique)
    GraphicsDevice gs = ge.getDefaultScreenDevice();
     
    // stocke le nombre d'octets libres dans la mémoire de la carte graphique(VRAM)
    int bytes = gs.getAvailableAcceleratedMemory();
    // calcule le nombre de Kilo Octets libres dans la carte graphique
    int kbytes = bytes /1024;
    // calcule le nombre de Méga Octets libres dans la carte graphique
    int mbytes = bytes /1048576;
    Cela dépend de ce que tu charge.
    je charge une JFrame qui contient plusieurs composant , comme je veut aussi
    afficher un autre splash (comme Patientez SVP ..) lors de la connection à la base et d'afficher les données

    la FAQ : http://java.developpez.com/faq/gui/?...res_composants

  6. #6
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 051
    Par défaut
    Si c'est une frame, affiche le splash et ne met pas de progressbar, car tu n'a pas de moyen de connaitre un "temps" total.

    Quand à la mémoire graphique... je ne vois pas le rapport.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/12/2008, 12h06
  2. Retourner une valeur qui dépend de plusieurs lignes
    Par oli43 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 22/10/2008, 16h00
  3. [NB 5.5] Projet qui dépend d'un autre projet
    Par gifffftane dans le forum NetBeans
    Réponses: 2
    Dernier message: 14/09/2007, 11h02
  4. [Formulaire] champ qui dépend d'un autre
    Par atlantideD dans le forum IHM
    Réponses: 1
    Dernier message: 23/04/2007, 15h09
  5. [Système] exec() qui bloque le chargement de page sous IE
    Par Ryan Sheckler dans le forum Langage
    Réponses: 6
    Dernier message: 09/01/2007, 22h02

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