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

Agents de placement/Fenêtres Java Discussion :

Jdialog qui ne rafraichit pas


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Mars 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 126
    Par défaut Jdialog qui ne rafraichit pas
    Bonjour,

    Voici monde code reduit à sa plus simple expression :

    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
    import java.awt.Dimension;
    import javax.swing.JDialog;
    import javax.swing.JPanel;
     
    public class Indexation2 extends javax.swing.JDialog {
    	public Indexation2(JDialog owner) {
    		super(owner,"Indexation en cours...",true);
     
    		setPreferredSize(new Dimension(600,400));
    		jLabel3 = new javax.swing.JLabel();
            jLabel3.setText("...");
            JPanel messagePane = new JPanel();
            messagePane.add(jLabel3);
     
            pack();  
     
            setVisible(true);
    		goIndexer();
    	    setVisible(false);
    	    dispose();
        }
     
        public void setLabel(String texte){
        	jLabel3.setText(texte);    	
        }
     
        public void goIndexer(){
    		for(int i=1;i<100;i++){
    			setLabel("Indexation de : "+String.valueOf(i));
    			System.out.println("ici");
    			try {
    				Thread.sleep(100);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
        }
     
        private javax.swing.JLabel jLabel3;
     
    }
    Je ne comprends pas pourquoi le rafraichissement ne se fait pas...

    Merci de vos avis

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 95
    Par défaut
    Première interrogation, pourquoi un Thread.sleep(100) dans une bouble ? C'est pour simuler un traitement long ?

    En tout cas, ton traitement goIndexer prend du temps, il ne faut pas qu'il s'exécute dans le thread de Swing. Je te renvoie à la FAQ sur les traitements long avec Swing.

  3. #3
    Membre très actif
    Inscrit en
    Mars 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 126
    Par défaut
    Oui tout à fait, c'est pour simuler.

    Merci pour ton lien, je comprends mieux.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Citation Envoyé par plopinou Voir le message
    En tout cas, ton traitement goIndexer prend du temps, il ne faut pas qu'il s'exécute dans le thread de Swing.
    Cette méthode n'est pas exécutée dans le Thread de Swing. Du moins avec le code qui est donné.

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

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

    Tu n'as pas ajouté ton panel à la fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setContentPane(messagePane);
    Ensuite, ta fenêtre est modal, ce qui fait que le code est bloqué suite à :
    et ton traitement se lance une fois que l'on à fermé la fenêtre manuellement.

    Soit tu rend ta fenêtre non modal et sa fonctionnera (mais bloquera ton appli), soit tu devras créer un thread (et le lancer) afin de ne pas bloquer ton appli.
    De plus la mise à jour du texte du label devrait être faite dans l'EDT.

    Tu peux regarder la FAQ GUI, il y a un article sur "pourquoi ma progressbar se rempli d'un seul coup" ou quelque chose du genre, ça t'aidera.
    La classe SwingWorker permet aussi se genre de chose.

Discussions similaires

  1. Page qui se rafraichit pas
    Par maserati dans le forum JSF
    Réponses: 13
    Dernier message: 30/03/2012, 10h59
  2. Réponses: 4
    Dernier message: 16/03/2009, 16h34
  3. [HTML] Image qui se se rafraichit pas
    Par Sh4dow49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/08/2008, 11h54
  4. Réponses: 17
    Dernier message: 21/11/2006, 12h44
  5. JDialog qui ne s'affiche pas bien
    Par angiosfr dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 20/12/2005, 13h05

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