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

Interfaces Graphiques en Java Discussion :

Les threads et les interfaces graphiques


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 131
    Par défaut Les threads et les interfaces graphiques
    Salut,
    Quelqu'un peut me dire pourquoi je n'ai pas la possibilité d'utiliser les options graphiques(d'autres boutons....etc ) sur mon interface graphique si cette dernière lance un thread après un clic sur un bouton, ensuite tout revient normal après son achèvement.
    S'il y a une solution, informez-moi et merci d'avance .

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Montre-nous ton code, sans ça, on ne peut rien dire.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    a vue de boule de crystal je dirais que c'est parce que tu ne lance pas le thread mais que tu fais le traitement dans le thread courant qui est le thread graphique. Autrement dit que tu as confondu les méthode start et run sur ton Thread.

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 131
    Par défaut
    voici mon code: (le traitement fait par un bouton)
    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
     
                Runnable tache = new Runnable() {
                        public void run() {
                            System.out.println(" En attente");
     
                        }
                    };
       for (int h = 0; h <angle_traj.size(); h++) {
    // un traitement est fait + le calcule du temps d'attente 
     
                            t = new Thread(tache);
                            t.start();
                            try {
                                Thread.sleep(temps_attente);
                            } catch (InterruptedException ex) {
                                Logger.getLogger(LA2.class.getName()).log(Level.SEVERE, null, ex);
                            }
    }
       t.stop();
    le bute c'était juste d'avoir des traitements après chaque temps d'attente

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ouai, donc ton thread ne fait rien et ta boucle se trouve dans l'action du bouton. Normal que ton thread graphique ne foute rien pendant ce temps là. Ta boucle et ton sleep doivent être dans le run de ton Thread.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Oui, là tu lances autant de thread (qui ne font rien d'autre qu'afficher un truc dans la console) que la valeur de angle_traj.size() (si ça vaut 1000, tu lances 1000 threads !!!).
    Il ne faut lancer qu'un seul thread, dans lequel tu fais la boucle.
    A noter qu'on ne doit pas appeler la méthode stop() de Thread pour arrêter un Thread (voir la javadoc pour le détail du pourquoi). Et même si ça fonctionnait, tu n'arrêterais que le dernier thread lancé (heureusement qu'il ne font tellement peu qu'ils s'arrêtent tous d'eux-mêmes rapidement).

    Si par la suite tu dois mettre à jour l'UI dans ton thread, ou à la fin, tu aurais intérêt à utiliser un SwingWorker qui te masquera l'aspect bas niveau du thread, et te facilitera les choses.

    Il y a également les Timer pour exécuter des tâches à intervalles réguliers, voir les ScheduledExecutorService.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Enlever les images d'une interface graphique
    Par Mademoiselle_Carly dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 27/05/2011, 11h33
  2. les actions dans l'interface graphique
    Par bouhmid86 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 08/03/2009, 19h23
  3. les matrices dans un interface graphique
    Par SavoitTout dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 29/04/2008, 21h38
  4. [JUnit] Les tests sur des interfaces graphiques
    Par adilo dans le forum Tests et Performance
    Réponses: 5
    Dernier message: 01/02/2006, 14h27

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