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 :

Erreur dans le tuto SwingWorker


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 472
    Par défaut Erreur dans le tuto SwingWorker
    Bonjour,
    J'ai lu attentivement le tutoriel sur le SwingWorker http://rom.developpez.com/java-swingworker/ et en compilant l'exemple sous eclipse j'ai une erreur à la fin du programme.
    La voici
    java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: the value should be from 0 to 100

    et elle semble se trouver dans la méthode done()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            @Override
            protected void done() {
                try {
                    /* Le traitement est terminé. */
                    setProgress(100);
                    /* À la fin du traitement, affichage du nombre de fichiers parcourus dans le textfield. */
                    textField.setText(String.valueOf(get()));
                } catch(Exception e) {
                    e.printStackTrace();
                }
            }
    et plus exactement ici : textField.setText(String.valueOf(get()));

    Je comprends qu'il veut que la valeur renvoyé à la fin de doInBackground() soit entre 0 et 100 alors que j'ai plus de 100 fichiers dans le répertoire scanné. Mais la valeur renvoyée par doInBackground() doit-elle toujours être entre 0 et 100 (ça me parait bizarre) et sinon quelle méthode permet de donner des limite à ce que renvoie doInBackground().

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 472
    Par défaut
    En fait l'erreur se situe au niveau de setProgress((int) progressStart); dans doInBackground().
    En effet setProgress indique où l'on en est dans le processus et doit avoir donc une valeur entre 0 et 100 %

  3. #3
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 105
    Par défaut
    Quelle erreur ?

    Ca doit renvoyer 0 a 100 c'est tout

    Un simple calcul devrait régler ca...

    Si tu as 15356 fichiers alors le progress vaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    progressValue = Valeur*100/15356;
    ou quelque chose du même accabit.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 472
    Par défaut
    En fait il semble que le problème se situe dans la récursivité au moment où on ajoute step à progressStart. A un moment progressStart dépasse 100, je ne sais pas pourquoi ?

    En fait, comme l'indiquait l'auteur du tutoriel, ce calcul n'était pas l'objectif donc j'ai simplifié en supprimant la récursivité en ne gardant que le premier niveau de répertoire et il n'y a plus de problèmes.

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 472
    Par défaut
    J'ai essayé d'adapter le programme proposé dans le tutoriel http://rom.developpez.com/java-swingworker/
    Je rappelle le principe de ce programme : on remplit un JTextArea au fur et à mesure que l'on lit un répertoire.
    J'ai voulu faire la même chose mais avec un composant personnel et cela ne marche pas.
    Pour simplifier j'ai préféré faire deux classes : une pour la JFrame et une pour le SwingWorker (plus bien sûr les classes pour les composants personnels).
    Malheureusement cela ne marche pas : au lieu de se remplir au fur et à mesure, il ne se remplit qu'à la fin et encore à la condition que j'oblige la fenêtre à se redessiner.
    Il y a sûrement quelque chose que j'ai oublié.

  6. #6
    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
    On ne pourra certainement pas te dire quoi sans que tu nous montre le code associé.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/04/2012, 14h46
  2. Erreur dans le tuto de julien-pauli
    Par thebarbarius dans le forum Zend Framework
    Réponses: 7
    Dernier message: 12/07/2011, 12h21

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