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 :

Pouvoir cliquer sur des boutons et rafraichir une interface au milieu d'une procédure


Sujet :

EDT/SwingWorker Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut Pouvoir cliquer sur des boutons et rafraichir une interface au milieu d'une procédure
    Ennoncé compliqué, je vais essayer de faire simple !

    Mon contexte :

    Une interface swing, un champs JLabel où est affiché une question.

    Deux boutons où l'on répond par OUI ou par NON à la question.

    Derrière, un algo qui tourne en boucle.

    Ma question : comment faire cliquer un bouton, et afficher une nouvelle question, et ce en plein milieu d'une procédure de traitement ?

    Selon ce que je vois, je ne peux même pas faire de repaint, et mon programme est donc bloqué.

    Cela fonctionnait très bien en mode saisie clavier avant que je fasse une interface, le programme demandait dans la console, mais là, je ne trouve pas comment faire ça avec une interface.

    Des idées ? Merci si vous pouvez m'aider !

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Tu dois faire tourner ton algo dans un Thread séparé.
    Mais poster ton code ne serait pas superflu
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,



    Quel est cet algo qui tourne en boucle "derrière" ?
    Est-il vraiment dans un autre thread ?

    D'après les symptôme on dirait que tu bloque l'EDT...


    Un programme en mode console et en mode graphique s'organise très différemment :
    • En mode console on se contente de "procédurale" en bouclant sur deux étapes :
      1. On demande une saisie utilisateur.
      2. On traite la demande

    • En mode graphique c'est totalement différent on doit traiter des actions en parallèle et selon un modèle événementielle : on ne demande pas une saisie utilisateur, on attend l'évènement qui nous le signalera.


    Bref tu ne devrais pas avoir d'algo qui tourne en boucle !!!


    a++

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    Un thread séparé, pourquoi pas, si ça peut résoudre le problème.

    Pour mon code je vais essayer de faire simple et d'extraire la plus petite partie parmi tout mon bordel.

    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
    while (true) {
       // réponse représente le cas ou l'algo à trouvé une solution
       // et ne pose donc plus de question
       if (agenda.size() == 0) {
          try {
             if () {
             // des trucs !
             }
             // c'est dans new question que l'on attends la saisie
             // d'une réponse au clavier, cela retourne vrai ou faux
             // selon ce que l'on a saisie au clavier,
             // c'est là que j'aurai besoin d'attendre qu'il clic sur oui
             // ou sur non sur une question que je lui affiche
             else if (this.newQuestion(a)) {
     
                // des instructions
             }
          } catch (IOException e) {
             //
          }
       }
       else {
          // un gros truc avec plein de boucles !
          // mais ce n'est pas récursif
          // le retourne true est ici est fait donc sortir de la
          // procédure à un moment
          return true;
       }
    }
    Modifier tout mon code pour que la procédure soit finie lors de la question et que l'on attende un évènement pour le continuer est un peu prise de tête à faire.

    Je peux résoudre ça avec thread ou autre ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Par défaut
    J'ai fini par trouver ce que je cherchais.

    Ce problème se résout facilement avec un Thread.

    http://www.exampledepot.com/egs/java...useThread.html

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

Discussions similaires

  1. Appeler une interface 2 à partir d'une interface 1
    Par cedric_kayo dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 13/10/2014, 09h35
  2. Empêcher de cliquer sur des boutons dans un userform
    Par bsangoku dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/02/2013, 17h04
  3. Réponses: 5
    Dernier message: 12/07/2012, 10h40
  4. [WD9] Cliquer sur des enregistrements dans une table
    Par oz80 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/12/2005, 20h11
  5. cliquer sur un bouton d'une application extérieure
    Par looc 6699 dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 12/12/2005, 17h46

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