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

Java Discussion :

[Conception] - Chargement


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut [Conception] - Chargement
    Salut à tous

    Ca fait pas mal de temps que je n'ai plus fait de Java et j'ai décidé de m'y remettre.
    J'ai donc un fichier XML que je charge grace à DOM au démarrage de l'appli et j'aimerais créer une sorte de SplashScreen avec une JProgressBar qui montre l'état du chargement de ce fichier XML avant d'afficher la GUI de l'appli...

    J'ai consulté la doc concernant les JProgressBar dans la doc Java et elle me semble assez claire. Le seul problème (si j'ai bien compris le code), c'est qu'ils mettent à jour la JProgressBar toutes les secondes, en déclenchant un événement capturé par un ActionListener. En gros si j'ai bien compris ça se passe comme ça :

    _ Un timer déclenche le code de l'ActionListener toutes le secondes.
    _ L'ActionListener se charge de récupérer l'état courant de la tâche que l'on surveille (dans mon cas le chargement du fichier)
    _ L'ActionListener met à jour la JProgressBar avec ces infos.

    Bref, je trouve que cette méthode n'est pas très élégante car la barre avance de manière saccadée. J'aimerais donc améliorer cela pour avoir une JProgressBar fluide.

    Est-ce faisable ? J'ai pensé aux Threads mais je ne vois pas trop comment faire ça.. A vrai dire, je suis un peu perdu

    Si quelqu'un a une idée il serait vraiment le bienvenu

    Pour le moment j'ai pensé faire :

    une classe LoadingTask qui extends SwingWorker et qui met à jour l'état de la tâche en fonction du chargement (il faut aussi que je vois comment faire ça...)

    une classe Loading qui récupère la taille du fichier à charger, et qui, dans sa méthode go(), crée une instance de LoadingTask et la démarre (loadingtask.start(); )

    dans mon main, j'ai pensé créer une instance de Loading et lui appliquer la méthode go(). C'est à partir de là que je bloque, je ne sais pas comment mettre à jour ma JProgressBar...

    Enfin je m'embrouille sûrement pas mal :s

    Toute aide est donc la bienvenue !
    Merci

  2. #2
    Membre chevronné
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Par défaut Re: [Conception] - Chargement
    Citation Envoyé par defkid
    Le seul problème (si j'ai bien compris le code), c'est qu'ils mettent à jour
    Hein? Qui ça, "ils"?

    La mise à jour de la progressbar se fait lorsque tu le décides. Ca vient d'où ce 1 seconde?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    Au temps pour moi, c'est extrait de l'exemple fourni dans la doc java. Voici la portion de code :

    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
     
    //Create a timer.
            timer = new Timer(ONE_SECOND, new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                    progressBar.setValue(task.getCurrent());
                    String s = task.getMessage();
                    if (s != null) {
                        taskOutput.append(s + newline);
                        taskOutput.setCaretPosition(
                                taskOutput.getDocument().getLength());
                    }
                    if (task.isDone()) {
                        Toolkit.getDefaultToolkit().beep();
                        timer.stop();
                        startButton.setEnabled(true);
                        setCursor(null); //turn off the wait cursor
                        progressBar.setValue(progressBar.getMinimum());
                    }
                }
            });
    Et pour la totale, ça se trouve ici : Exemple d'utilisation de JProgressBar de la doc java

    Merci de t'intéresser à mon soucis en tout cas

  4. #4
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Dans ton cas le problème va être que tu ne sait pas en combien de temps la JProgressBar va être totalement remplie...car je suppose que tu ne connais pas combien d'élements ton parser DOM va parser.

    Si tu connais cette taille, tu met la valeur maximal de ta ProgressBar à cette valeur, et à chaque element parsé, tu incrémente de 1.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 28
    Par défaut
    En effet, je ne connais le nombre d'éléments qu'une fois le fichier parsé
    Et comme ce n'est pas moi qui gère le parsing... c'est vrai que ça va poser un problème :/
    Je pensais faire ça avec la taille du fichier mais le problème revient au même...

    Bon je vais mettre mon idée de JProgressBar de coté pour le moment et laisser un simple SplashScreen pendant le parsing en attendant d'avoir de nouvelles idées/infos...

    Merci encore et si quelqu'un a des idées, n'hésitez pas car je doute que ça ne soit pas faisable

  6. #6
    Membre chevronné
    Inscrit en
    Avril 2004
    Messages
    503
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 503
    Par défaut
    Citation Envoyé par defkid
    Bon je vais mettre mon idée de JProgressBar de coté pour le moment et laisser un simple SplashScreen pendant le parsing en attendant d'avoir de nouvelles idées/infos...
    C'est exactement l'architecture que j'ai choisie...
    J'ai un fichier XML que je parse (mais en SAX) pendant qu'un SplashScreen est affiché.

Discussions similaires

  1. Problème de conception : chargement de config
    Par sfarc dans le forum Débuter
    Réponses: 35
    Dernier message: 08/01/2014, 22h45
  2. concept de chargement hibernate
    Par yacine.dev dans le forum Hibernate
    Réponses: 0
    Dernier message: 29/04/2010, 11h04
  3. [Conception] Problème de chargement d'image
    Par cnguyen dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/08/2006, 01h50
  4. [Conception] probleme chargement d'une base donnée à un tableau
    Par free01 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/06/2006, 15h29
  5. [conception] les maps et leur chargement
    Par zax-tfh dans le forum Développement 2D, 3D et Jeux
    Réponses: 13
    Dernier message: 16/02/2006, 02h10

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