Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fenêtre de chargement

    26 janvier 2012 à 16:25:45

    Bonjour,

    Dans mon application, je souhaite rajouter un petit "truc" ergonomique, c'est à dire une petite fenêtre qui s'affiche lorsque je charge des données.

    J'ai donc une class "load.java" qui contient un gif de chargement, la fenêtre s'ouvre bien mais seulement en partie, en fait quand mon programme charge des données, tout est "gelé".

    Existe-il un moyen pour que, quand je charge mes données, je puisse ouvrir ma fenêtre load? La faire tourner en "arrière plan".

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      26 janvier 2012 à 16:28:10

      Threads (le visuel doit rester dans le thread graphic, les lib graphiques étant rarement enclines au multi threading, c'est le chargement qui doit être dans un thread a part).
      • Partager sur Facebook
      • Partager sur Twitter
        26 janvier 2012 à 17:02:34

        Merci !

        Je regarde des tutos mais je ne vois pas trop comment faire..hum

        J'ai une class Fload extends Jframe qui contient un jlabel qui a pour icone un gif !
        • Partager sur Facebook
        • Partager sur Twitter
          26 janvier 2012 à 17:12:09

          Ce que te dit shakhal c'est :
          - Laisse tes composants tels qu'ils sont (JFrame avec JLabel etc.).
          - Quand tu ouvres la fenêtre, lance un Thread qui, lui, chargera les données

          Teste, bidouille, et montre-nous où tu bloques.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            26 janvier 2012 à 17:13:47

            Citation : Javier

            Ce que te dit shakhal c'est :
            - Laisse tes composants tels qu'ils sont (JFrame avec JLabel etc.).
            - Quand tu ouvres la fenêtre, lance un Thread qui, lui, chargera les données

            Teste, bidouille, et montre-nous où tu bloques.



            et accessoirement update la vue avec un listener.
            • Partager sur Facebook
            • Partager sur Twitter
              26 janvier 2012 à 17:15:53

              D'accord, et est-ce possible dans l'autre sens? Lancer un thread qui ouvre ma fenêtre lorsque je charge les données?

              Edit :

              En gros ce que j'essaye de bidouiller la, c'est dans ma fonction chargerDonnees(), je créé un Thread th.
              Je fait th.start() au début de ma fonction, et puis th.stop() à la fin?

              Excusez moi si je raconte des bêtises.

              Et donc si ce que je vient de dire est faisable, ou puis-je définir l'action à faire lorsque je fait mon th.start() et th.stop() ?

              C'est à dire afficher ma fenêtre de chargement, puis l'enlever.
              • Partager sur Facebook
              • Partager sur Twitter
                26 janvier 2012 à 17:23:21

                Si tu charges tes données depuis le code "principal" (le thread principal de l'EDT en fait) le traitement est bloquant, donc toute ton interface sera "gelée" le temps du traitement.


                @shakhal : l'aiguiller vers le SwingWorker c'est ptetre le plus simple pour "mettre à jour la vue" non ? Jsais pas.
                • Partager sur Facebook
                • Partager sur Twitter
                  26 janvier 2012 à 17:32:05

                  Arf, flute.

                  Heuuu en fait je sais pas si c'est le thread principal de l'EDT, car quand je lance mon appli, j'ai une première fenêtre ou j'ai plusieurs possibilités, je clique sur le bouton "afficher liste", et cela m'ouvre une nouvelle fenêtre qui liste des données de ma BDD.

                  Ensuite, depuis cette fenêtre qui liste des données, il est possible d'appliquer divers filtres (tout mes filtres utilisent la même fonction pour trier les données), c'est donc pour cela que j'avais dans l'idée de faire un truc du genre :

                  private void chargeD(String paramètre de filtre){
                          Thread th = new Thread();
                          th.start() // lancement de Fload
                          //Traitement des données...
                          //....
                          //....
                          //....
                          // Fin du traitement, mise à jour de la liste
                          th.stop(); // On ferme Fload et on redonne la main à l'utilisateur                
                  }
                  


                  J'ai l'impression d'écrire des choses peu conventionnelles... :-° , en espérant ne pas vous choquer !
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Fenêtre de chargement

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown