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 :

Pattern MVC et barre de progression


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 52
    Points : 47
    Points
    47
    Par défaut Pattern MVC et barre de progression
    Salut,

    Je développe une petite appli swing avec des traitements assez long. J'utilise une jprogressbar pour indiquer l'avancement du traitement.
    Tout fonctionne bien, je passe l'objet jprogressbar au thread qui fait les traitement et je lui demande de la rafraichir ... Le problème c'est que cette solution ne me parait pas propre du tout :-\ Des classes metier se retrouve à manipuler des objects swing ...

    Je fait pê une crise de MVCite aïgue mais ça me gêne une peu maintenant que je voudrais utiliser autrement ces classes metier sans barre de progression.
    Comment doit on faire ? Quelqu'un peut-il me donner un exemple ?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    C'est ton thread qui manipule tes objets swings, pas tes objets metiers, non ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 52
    Points : 47
    Points
    47
    Par défaut
    Comment ça ?
    Je créer un thread pour les traitements, et dans ce run je fait des appels jprogressbar.setValue().
    Comment faire autrement ?

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Tu peux utiliser le pattern Observer, plutot que MVC et oui si possible mieux vaut utiliser une Thread separee pour ta requete qui enverra des notifications a un observateur/listener qui lui mettra a jour la progress barre durant l'EDT a l'aide de SwingUtilities.invokeLater() et SwingUtilities.invokeAndWait()

    De maniere simplifiee et un peu bidon :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    public class Task {
      /** Gets the length (number of notifications, not time length) of the task depending on the task parameter.
      * @return A positive number, -1 is the task length is unknown/undefined.
      */
      public int getTaskLength() {
        ...
      }
     
      /** Do the task.
       * @param obs An optional observer that is interrested in receiving this task's notifications, may be <code>null</code>.
       */
      public void doTask(TaskObserver obs) { 
        ... 
        if ((obs != null) && (obs.hasBeenCanceled())) {
           return;
        }
        if (obs != null) {
          obs.stepDone();
          obs.setNote("Switching to next sub task.");
        }
        ...
      }
    }
     
    /** An implementation that only holds a <code>JProgressBar</code>.
     */
    public class ProgressBarTaskObserver implements TaskObserver {
     private JProgressBar bar = ...
     
      ...
     
      /** @inheritDoc
       * <br>This implementation always returns <code>false</code> as we do not have a cancel button.
       */
      public boolean hasBeenCanceled() {
        return false;
      }
     
      /** @inheritDoc
       * <br>Increments the bar.
       */
      public void stepDone() {
        try {
          // Update at EDT and wait until update is done.
          SwingUtilities.invokeAndWait(new Runnable() {
             public void run() {
               bar.setValue(bar.getValue()+1);
             }
          });
        }
        // Silently consume exception.
        catch (Exception e) {
        }
      }
    }
    A noter que Swing dispose deja de ProgressMonitor que tu peux enrober dans ta propre classe d'observateur.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je disais juste qu'un Thread qui manipule des objets métiers et qui fait des mises à jour d'objets Swing (avec le invokeLater comme l'a dit bouye), ça ne me choque pas.
    Je ne vois pas comment faire autrement d'ailleurs.

  6. #6
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Question conne : il n'existe pas de nom pour une "sous-classe" entre métier et vue ?

  7. #7
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Controler
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 52
    Points : 47
    Points
    47
    Par défaut
    Ok merci ...
    C'est encore un peu vague, je joue le MVC qu'à 2 temps encore mais je vais regarder du côté du invokeLater.

Discussions similaires

  1. Barre de progression et MVC
    Par GreatDeveloperOnizuka dans le forum C#
    Réponses: 3
    Dernier message: 13/12/2010, 16h03
  2. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  3. Réponses: 12
    Dernier message: 27/05/2004, 00h13
  4. [DEBUTANT] Barre de progression
    Par pupupu dans le forum MFC
    Réponses: 4
    Dernier message: 18/01/2004, 16h47
  5. [web] Barre de Progression ASCII
    Par Red Bull dans le forum Web
    Réponses: 13
    Dernier message: 05/06/2003, 12h56

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