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 :

[Thread] Comment recharger le GUI via une tâche de fond?


Sujet :

EDT/SwingWorker Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut [Thread] Comment recharger le GUI via une tâche de fond?
    Bonjour les gens... et bonne année!
    J'ai une aplication Swing (qui suit le patter MVC) et une fenêtre Browser qui parcourt tous mes items appelés Variante. Et un form d'édition d'un item Variante. Lorsque je sauvegarde une Variante (via le boutton Save de la form d'edition), je veux recharger toutes mes Variantes (donc recharger le model et la view de Browser). Mais tout ceci prend pas mal de temps (sauvegarder les infos et récupérer toutes les variantes depuis le serveur).
    Je voudrais donc recharger le modèle et la vue dans une tâche de fond, mais je ne sais pas vrmt comment utiliser SwingUtilies.invokeLater(), ou SwingWorker, ni exactement ou les places pour que mon application ne "freeze pas".

    Voici des bouts de code de mon app:
    Le listener sur mon button Save
    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
    saveButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent actionEvent) {
                    VarianteDetail variante = new VarianteDetail();
                    if (validateData("variante.validation.error")) {
                        saveData(variante);
                        try {
                            if (variante.getId() != null) {
                                BrowseVariantesAction.getModel().updateItem(variante);
                            } else {
                                BrowseVariantesAction.getModel().createItem(variante);
                            }
     
                            BrowseVariantesAction.reloadBrowser();
                            parentFrame.dispose();
     
                            JOptionPane.showMessageDialog(OpalysClient.getMainFrame().getContentPane(),
                                    I18nSupport.tr("variante.edition.save.successfull"),
                                    I18nSupport.tr("success"),
                                    JOptionPane.INFORMATION_MESSAGE);
                        } catch (OpalysBusinessException e) {
                            Utils.handleBusinessException(e);
                        } catch (AccessDeniedException e) {
                            Utils.handleAccessDeniedException(e);
                        } catch (Exception e) {
                            Utils.handleServerError(e);
                        }
                    }
                }
            });
    La méthode reloadBrowser de BrowseVariantesAction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      public static void reloadBrowser() {
            try {
                getModel().reloadItems();
                getView().reloadData();
            } catch (Exception  e) {
                }
        }
    Donc on recharge d'abord le modèle, puis on recharge ensuite la vue.
    Merci d'avance pour votre aide et bon weekend
    Nicolas
    Blogueur @ www.ABCArgent.com

  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 : 43
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Va voir ici http://gfx.developpez.com/tutoriel/j...ing-threading/
    Tout est clairement expliqué.
    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.

Discussions similaires

  1. Réponses: 12
    Dernier message: 17/01/2008, 11h46
  2. Réponses: 2
    Dernier message: 09/08/2007, 11h46
  3. Accès à Oracle via une tâche planifiée ?
    Par bds2006 dans le forum Oracle
    Réponses: 7
    Dernier message: 12/07/2006, 09h54
  4. [Thread] Limiter le temps max d'une tâche
    Par be_tnt dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 27/03/2006, 11h59
  5. Comment récupérer l'ID d'une tâche programmée avec AT ?
    Par langela94 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 11h01

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