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

AWT/Swing Java Discussion :

affiche message 3 secondes


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut affiche message 3 secondes
    Bonjour à vous.

    Malgré quelleques tentatives diverses et variées je n'arrive pas à faire apparaitre un pauvre message dans certaines conditions (genre pas de resultat trouvé)

    mon code est du genre:

    if (true){
    je fais quand ça marche
    }else{
    j'affiche ce foutu message que 3 secondes et je fais quand ça marche pas
    }


    j'ai essayé avec des jlabel que je rend setvisible(true) , un Thread.sleep(3000) et setvisible(false) mais ça marche pas. Ni avec une ouverture de jframe et un this.dispose apres le sleep (là, la fenetre s'affiche apres le dispose même avec un repaint().

    J'ai pas trouvé de jdialog qui se ferme toute seule...

    Je mets un bout 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
     
    public affichageMessageTemporis() {
            initComponents();
            jLabel1.setText("Mon message");
     
             try {
                System.out.println("etape 1");
                Thread.sleep(5000); 
                 System.out.println("etape 2");
     
                 System.out.println("etape 3");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }finally{
                  this.dispose();
            }
        }

    Le message ne s'affiche qu'apres le sleep et la fenetre se ferme pas.
    A croire que le programme à pas le temps de peindre l'image avant de passer au sleep...
    Y a t'il un moyen simple et efficace d'afficher un message quelques secondes ??
    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Points : 676
    Points
    676
    Par défaut
    Bonjour,

    le plus probable est que le Thread.sleep() face dormir le thread d'affichage justement .. (bon apres il faut voir qui a apeler la method)

    je pense que tu va devoir fair un thread a par qui va juste attendre 3sec puis faire ton etape 2 et 3 :s

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Points : 5 778
    Points
    5 778
    Par défaut
    Effectivement Thread.sleep() "endort" le Thread courant. Pour ne pas interférer avec l'EDT tu dois donc l'exécuter dans un nouveau Thread .

    Voici un exemple de classe affichant un message temporaire
    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
    public class AutoCloseDialog extends JDialog {
     
        private JLabel messageLabel;
        private long timeout;
     
        public AutoCloseDialog(Frame owner, String title, String message, long timeout) {
            super(owner, title);
            messageLabel = new JLabel(message);
            this.timeout = timeout;
            add(messageLabel);
            pack();
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            setLocationRelativeTo(owner);
            addWindowListener(new WindowAdapter() {
     
                @Override
                public void windowOpened(WindowEvent e) {
                    // don't mess with the EDT, vilain
                    new Thread() {
     
                        @Override
                        public void run() {
                            try {
                                Thread.sleep(AutoCloseDialog.this.timeout);
                            } catch (InterruptedException ex) {
                                ex.printStackTrace();
                            } finally {
                                dispose();
                            }
                        }
                    }.start();
                }
            });
        }
     
        public static void showAutoCloseDialog(Frame owner, String title, String message, long timeout) {
            AutoCloseDialog dialog = new AutoCloseDialog(owner, title, message, timeout);
            dialog.setVisible(true);
        }
    }
    Qui s'utilise comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AutoCloseDialog.showAutoCloseDialog(owner, "title", "message to display", 3000L);

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 69
    Points : 64
    Points
    64
    Par défaut
    Merci bien a vous 2

    Ca marche impecable quand on mets pas en someil ce qu'on veut afficher

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

Discussions similaires

  1. Afficher un message quelques secondes
    Par vince29 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/02/2012, 14h04
  2. message affiché pendant quelques secondes
    Par kalou26 dans le forum C++Builder
    Réponses: 48
    Dernier message: 16/06/2006, 11h36
  3. Afficher message résultat requête
    Par dcollart dans le forum Oracle
    Réponses: 3
    Dernier message: 14/05/2006, 20h21
  4. [C#/VB.Net]Afficher message lorsque souris survole contrôle
    Par guillaume16 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/03/2006, 11h44
  5. afficher message d'alerte sur clic pendant chargement
    Par petitmic dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/11/2005, 12h14

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