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 :

Fermer JWindow 5 secondes après ouverture


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut Fermer JWindow 5 secondes après ouverture
    Bonjour,

    J'aimerai fermer une fenêtre JWindow 5 secondes après son ouverture. J'ai essayé la fonction wait() mais j'obtiens une erreur d'exécution. Donc j'ai réglé le problème avec une grosse boucle ... le problème de la boucle for, c'est que le temps d'exécution de la boucle varie selon le PC où elle est exé&cutée et comme mon PC rame avec des tapettes à mouches ....
    Bref, si quelqu'un connait la commande pour faire attendre une fenêtre 5 secondes ... merci.

    Voici le code avec un wait qui me renvoie une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    JWindow window = new JWindow();
    window.setSize(300, 200);//On lui donne une taille pour qu'on puisse la voir
    window.setVisible(true);//On la rend visible
    window.setLocationRelativeTo(null);	//placement au milieu de l'écran
    window.setAlwaysOnTop(true);
    try {
    	window.wait(5000);
    } catch (InterruptedException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    }
    window.setVisible(false);
    et voici le code avec une boucle for ... ca fonctionne sur mon pc mais sur un pc de compet on risque de ne pas voir la fenetre passer !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    JWindow window = new JWindow();
    window.setSize(300, 200);//On lui donne une taille pour qu'on puisse la voir
    window.setVisible(true);//On la rend visible
    window.setLocationRelativeTo(null);	//placement au milieu de l'écran
    window.setAlwaysOnTop(true);
     
    for(double i = 0; i < 110000; i = i + 0.0001){	
    }
    System.out.println("cpt terminé !");
    indow.setVisible(false);
    Bon, apparemment, il est possible de faire cela avec un thread aussi, qu'en pensez-vous ?

    Merci !!!

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Bonsoir !

    Bon, finalement le thread fonctionne très bien pour faire attendre 5 secondes et ne me rend pas dépendant des capacités de la machine !

    code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FenAPropos window = new FenAPropos();
    window.setVisible(true);
     
    try {
    	Thread.sleep(5000);
    } catch (InterruptedException e) {}
     
    System.out.println("cpt terminé !");
     
    window.setVisible(false);
    Merci

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Non, on ne doit pas faire comme ça (voir les explications que je t'ai donné ici).

    Sinon, wait() n'a rien à voir avec le fait d'attendre pendant un moment, mais dans le fait d'attendre un signal (envoyé depuis un autre thread, par appel de notify(), ou notifyAll()). Il est nécessaire d'obtenir un verrou sur l'objet sur lequel on attend, et c'est probablement parce que tu ne l'avais pas fait, que tu n'arrivais pas à l'utiliser.

    On ne doit jamais faire de boucle qui fait peu ou pas de code dans l'itération, car, effectivement, elle va accaparer un maximum de cpu et les autres process vont entre être génés.

    Pour les boucles qui font un nombre fixe d'itération (en général, for()) un utilisera Thread.sleep(), et pour les boucles qui attendent un changement d'état (genre while(!fini){}) on utilise justement wait() pour attendre, et notify() dans le thread qui change l'état (il y a des alternatives, pour des cas particuliers, comme la CountDownLatch par exemple, ou l'alternative évenementielle).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut
    Merci beaucoup pour votre réponse !

    Donc le wait est en rapport avec les Threads !

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par francky74 Voir le message
    Donc le wait est en rapport avec les Threads !
    S'il n'y a qu'un seul thread dans ton application, il n'y a aucune raison d'y voir un appel de wait() nulle part.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut merci
    Merci beaucoup !

    J'ai bien compris que le wait() est une attente de communication depuis un autre thread.


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

Discussions similaires

  1. [2008R2] Fermeture de SQLCMD quelques secondes après ouverture
    Par mortal dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 01/09/2014, 12h05
  2. Fermer fichier automatiquement 15 sec. après ouverture
    Par ANOVA dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/09/2010, 10h35
  3. Fermer page HTML apres ouverture
    Par bcd_30 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 19/02/2008, 10h40
  4. [C#] Fermer automatiquement une fenêtre après X secondes
    Par pi100 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/06/2007, 09h35
  5. Fermer Excel après ouverture OLE
    Par birdyz dans le forum Delphi
    Réponses: 6
    Dernier message: 07/09/2006, 13h35

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