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

avec Java Discussion :

Fenêtre pour faire patienter l'utilisateur


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 18
    Points
    18
    Par défaut Fenêtre pour faire patienter l'utilisateur
    Bonjour,

    Est-il possible de faire afficher une simple fenêtre indiquant à l'utilisateur de patienter pendant la tentative de connexion à une BD ?
    Cette fenêtre devra fermer une fois la connexion réussie ou pas.
    En fait, dans mon application, je demande à l'utilisateur d'entrer l'adresse IP du serveur de BD sur lequel il veut se connecter, et donc si cette adresse n'existe pas, 20 à 30 sec (très long) s'écoulent avant que le message d'erreur n'apparaisse.

    J'ai fait quelques recherches sur les JprogressBar, les threads, les MonitorProgress,... mais il y a sûrement moyen de faire ça très simplement je pense.

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Il n'y a rien de tout fait.

    Tu veux faire quelque chose de joli ou de simple ?

    Pour quelque chose de joli, regarde ce tuto : http://gfx.developpez.com/tutoriel/java/swing/wait/

    Sinon, le plus simple reste une simple progress bar avec SwingWorker ou simplement avec des Thread en tenant compte de l'EDT.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Baptiste Wicht Voir le message
    Pour quelque chose de joli, regarde ce tuto : http://gfx.developpez.com/tutoriel/java/swing/wait/
    .
    J'ai déjà consulté ce tuto mais ça ne vaut pas la peine de faire tout ça pour mon cas. Je voudrais juste une fenêtre pour avertir l'utilisateur que l'application est en train de tenter de se connecter à la BD.

    Citation Envoyé par Baptiste Wicht Voir le message
    Sinon, le plus simple reste une simple progress bar avec SwingWorker ou simplement avec des Thread en tenant compte de l'EDT.
    Je n'ai pas besoin non plus d'une bar de progression donc je pencherais plus pour les threads, le problème c'est que, malgré plusieurs essais, je n'arrive pas à en comprendre le fonctionnement. J'ai même eu droit à une boucle infinie.

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Voilà, j'ai utilisé un Thread qui lance la fenêtre "patienter" (classe FenWait).

    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
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class FenWait extends JFrame implements Runnable 
    {
        private JLabel lab1 = new JLabel("");
        public FenWait() 
        {
            super("Traitement en cours...");
            this.setSize(300, 100);
            this.setResizable(false);
            Dimension screen = Toolkit.getDefaultToolkit().getScreenSize(); // Taille de l'écran
            this.setLocation((screen.width - this.getSize().width)/2,(screen.height - this.getSize().height)/2); // Centrer à l'écran
            JPanel jp = new JPanel();
            jp.add(new JLabel("Traitement en cours..."));
            jp.add(lab1);
            getContentPane().add(jp);
        }
     
        public void run() 
        {
            lab1.setText("Traitement en cours...");
        }
    }
    Quand je lance mon thread, la frame s'ouvre bien mais reste transparente.
    Ai-je oublié quelque chose dans ma classe FenWait ?

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Quand je fais un main dans ma classe FenWait avec FenWait fw = new FenWait(), ma JFrame s'affiche normalement.
    Mais quand je l'appelle avec un thread à partir d'une autre classe, le thread fonctionne très bien mais la JFrame est transparente
    Pourquoi ?

  6. #6
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    En fait je n'ai même pas besoin de thread.
    Je veux juste afficher un JFrame ou JDialog "Traitement en cours..." pendant la connexion à la BD, et qui se ferme une fois la connexion réussie ou échouée.
    J'ai donc fait une classe FenWait (voir plus haut) qui fonctionne sans problème quand je la lance dans le main.
    Mais lorsque je la lance tout bêtement depuis ma méthode static void OpenConnection(), elle s'affiche mais le contenu est transparent malgré un setVisible().
    Bizarrement, lorsque la connexion échoue, j'ai un message d'erreur (c'est normal !) qui s'affiche devant ma fenêtre "Traitement en cours...", et c'est quand je ferme ce message d'erreur que ma fenêtre "Traitement en cours..." s'affiche ENFIN normalement. Mais pourquoi ne s'affiche-t-elle pas normalement dès la 1ère fois ?
    Je n'arrive toujours pas à comprendre pourquoi.

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    J'ai trouvé.
    En fait, ma méthode OpenConnection était elle même dans un:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    java.awt.EventQueue.invokeLater(new Runnable()
        {
            public void run()
            {
            }
        });
    C'est NetBeans qui me l'avait généré automatiquement à la création d'un JDialog d'authetification des utilisateurs.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Au fait il y a quelque chose d'extremement simple si tu veut faire afficher ton message d'attente tu fait dans main avant l'applel de ta methode(ou classe) un JOptionPane.showMessageDialog(null,"ton texte")

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 18
    Points
    18
    Par défaut
    Ca fonctionne grâce à SwingWorker

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

Discussions similaires

  1. Phrase pour faire patienter l'utilisateur durant l'envoi d'un formulaire
    Par heretik25 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/03/2012, 13h40
  2. [WD16] Animation pour faire patienter l'utilisateur
    Par bombseb dans le forum WinDev
    Réponses: 8
    Dernier message: 14/02/2012, 15h19
  3. Image pour faire patienter l'utilisateur
    Par sakhavat dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/04/2011, 09h53
  4. Faire Patienter l'utilisateur sur un Formulaire
    Par faressam dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/04/2008, 08h04
  5. [Servlet] Faire patienter l'utilisateur
    Par GLDavid dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/06/2006, 15h24

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