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

EDT/SwingWorker Java Discussion :

Interface graphique et clic de bouton


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Tsukaasa
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 68
    Par défaut Interface graphique et clic de bouton
    Bonjour,

    Je vous explique mon problème:
    Lors d'un clic de bouton sur l'interface graphique de mon application, un traitement d'un fichier excel se lance.

    Mais comme le traitement est long, j'aimerais montrer à l'utilisateur combien en % le fichier a été traité.
    Cependant, même si je redessine le label qui contient le pourcentage traité a chaque fin de ligne du fichier excel, rien ne s'affiche dans le label.

    au début je voulais le faire en affichant le pourcentage en ligne de commande, mais quand je lance l'application via un .bat, celle-ci se bloque de manière inexpliquée a un peu plus de la moitié du traitement de fichier.

    Pour l'interface, faut-il crée un thread pour l'affichage du pourcentage? si oui auriez vous un lien ou un piste pour m'aider?

    Par avance merci

  2. #2
    Membre extrêmement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par défaut
    Tu doit faire en sorte que le traitement soit fait dans un threads autre que celui qui s'occupe de swing, puis ensuite mettre a jour le pourcentage depuis le thread de swing (via SwingWorker je crois)

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Cf le cours suivant pour comprendre le modèle de threading de Swing.
    http://gfx.developpez.com/tutoriel/j...ing-threading/

    Solution éventuelles dans la FAQ ou dans l'utilisation du SwingWorker

  4. #4
    Membre éclairé Avatar de Balbuzard
    Profil pro
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    J'ai un peu le même problème, et j'ai plus ou moins réussi à m'en sortir mais sans utiliser Swingworker.

    dans la méthode Actionperformef(ActionEvent e) je lance un Thread.
    Dans la méthode run() de ce Thread, je réalise le traitement de mes fichiers (je dois en faire pleins à chaque fois) et dans le Thread principal, dès qu'un fichier est traité, il y a raffraichissement de la JProgressBar.

    Si tu veux plus de détail, je peux te filer mon code.

    Je voudrais savoir s'il existe un moyen pour que, pour un seul fichier, on puisse savoir où on en est dans le traitement. Ma JProgressBar progresse "par accoup", je veux dire par là que comme je ne sais pas comment déterminer le temps qu'il me reste pour traiter mon fichier (ici exportation dans un autre format) je ne peux pas instancier ma JProgressBar...

    En bref, pour l'instant j'ai une indication sur le nombre de fichiers traités/nombre de fichiers total, est-ce qu'il existe un moyen d'avoir le temps écoulé/temps total?

    Merci de vos réponses :-)

  5. #5
    Membre confirmé Avatar de Tsukaasa
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 68
    Par défaut
    Merci à tous je vais essayer tout ça ^^

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 45
    Par défaut
    A l'interieur de ton Thread tu dois fair le refresh de ton JprogressBarr en utilisant Swingutilities.invokeLater.

    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
    //donc dans le code du thread, au lieu de :
    .
    .
    JProgressBar bar = new JProgressBar(0,100);
    .
    .
    .
     
    bar.setValue(value);
     
    // tu ecris
     
    SwingUtilities.invokeLater(new Runnable(){
       public void run()
       {
           bar.setValue(value);
       }
    } );
    // et ca poste ton refresh dans l'EDT
    // et ca poste ton refresh

Discussions similaires

  1. SWING Interface graphique les clics avec la souris
    Par aubernard dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 10/04/2014, 15h16
  2. Réponses: 1
    Dernier message: 22/02/2009, 21h54
  3. Bouton d'interface graphique bloqué
    Par levalp dans le forum Windows Forms
    Réponses: 26
    Dernier message: 07/02/2008, 10h43
  4. interface graphique avec bouton parcourir
    Par Wael Maaoui dans le forum Tkinter
    Réponses: 2
    Dernier message: 26/03/2007, 13h00
  5. [INTERFACE GRAPHIQUE] Bouton et CheckBox
    Par Hoegaarden dans le forum AWT/Swing
    Réponses: 16
    Dernier message: 14/02/2006, 18h15

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