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

Interfaces Graphiques en Java Discussion :

comment rendre une fenetre modale ?


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut comment rendre une fenetre modale ?
    bonjour
    comment rendre une fenetre modale c'est à dire (on ne peut pas basculer à une autre fenetre tantque la fenetre active est ouverte MERCI )

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    JDialog et setModal(true)

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    j'utilse un JFrame pas un JDialog
    comme faire avec JFrame ?

    merci pour l'info sur le JDialog

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par inter_amine
    j'utilse un JFrame pas un JDialog
    comme faire avec JFrame ?
    Utilise un JDialog...
    JFrame n'est pas prévu pour ça.

  5. #5
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Si tu veux absolument une JFrame, et que ton but c'est de bloquer toutes les autres applications graphiques, je crois que setAlwaysOnTop(boolean alwaysOnTop) pourrais être ce que tu veux. Je ne l'ai jamais utiliser donc je ne suis sur de rien...

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par Janitrix
    setAlwaysOnTop(boolean alwaysOnTop)
    Oublie ça. C'est simplement pour avoir une fenêtre toujours en avant plan. Ca ne bloque absolument rien si ce n'est "mécaniquement" car on se sent bloqué quand on a une fenêtre devant.

    Si on veut absolument rendre une JFrame modale (ce dont je ne vois absolument pas l'intérêt), suffit de faire une petite recherche sur Google, j'suis sûr qu'on trouve des implémentations de ce comportement. Je me demande même si je n'ai pas vu ça dans une API connue (pour avoir les boutons minimizer et maximizer qui sont absents dans un JDialog). Mais je ne saurais plus dire quelle librairie.

  7. #7
    Membre expert
    Avatar de Janitrix
    Inscrit en
    Octobre 2005
    Messages
    3 391
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 3 391
    Points : 3 401
    Points
    3 401
    Par défaut
    Je n'étais pas vraiment sur du comportement de cette méthode. merci de m'avoir éclairé.

  8. #8
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 76
    Points : 80
    Points
    80
    Par défaut
    ou alors tu peux shunter le problème en forçant le focus sur ta JFrame

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    De mon côté j'utilise bien un jDialog... enfin, une extension d'un jDialog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class UploadInformation extends JDialog
        public UploadInformation() {
            this.setModal(true);
    ...
        }
    et je crée cette fenêtre de cette façon depuis ma fenêtre principale (une applet):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UploadInformation ui = new UploadInformation();
    Le JDialog se crée bien en modal, mais si j'ouvre une autre fenêtre par dessus (Word, explorateur...) et que je clique ensuite dans la barre des tâches sur mon Applet, je vois la fenêtre principale de l'Applet (que je ne peux pas activer puisque la fenêtre modale est ouverte) mais pas ma JDialog. Il faut que j'utilise Alt-Tab pour récupérer la JDialog...

    Quelqu'un aurait il des infos?

  10. #10
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par Ghislain
    Quelqu'un aurait il des infos?
    Il faut donner un parent à ton JDialog, en général la JFrame qui l'ouvre.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Merci pour cette piste... et là, c'est le drame!!! En effet, étant donné que c'est une applet, il n'y a pas de JFrame mais un JContentPane et c'est lui qu'il faudrait passer comme parent, je pense.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class UploadInformation extends JDialog
    public UploadInformation(JContentPane contentPane) {
       super(contentPane);
       this.setModal(true);
      ...
    }
    Et forcément, ça ne marche pas

    J'ai donc essayé de creuser en me basant sur ça: http://forum.java.sun.com/thread.jsp...sageID=3391015

    et du coup, j'obtiens le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class UploadInformation extends JDialog
    public UploadInformation(JContentPane contentPane) {
       super(JOptionPane.getFrameForComponent(contentPane));
       this.setModal(true);
      ...
    }
    et ça fonctionne

    Encore merci pour vos pistes et votre aide.

  12. #12
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Oui désolé, j'ai pas pensé te dire d'utiliser JOptionPane#getFrameForComponent..., c'est ce que je fais systématiquement (sinon ça centre par défaut ton dialogue par rapport à composant et pas par rapport à la frame qui contient ce composant).

    Sinon, pour info, tu peux spécifier que c'est modal dans le constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class UploadInformation extends JDialog
    public UploadInformation(JContentPane contentPane) {
       super(JOptionPane.getFrameForComponent(contentPane), true);
      ...
    }

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Merci

Discussions similaires

  1. Comment fermer une fenetre modale Prototype window
    Par rozierromain dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/10/2010, 13h41
  2. Comment rendre une fenetre prioritaire ?
    Par pasqual dans le forum C++Builder
    Réponses: 7
    Dernier message: 15/05/2007, 11h36
  3. comment rendre une fenetre modal
    Par inter_amine dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/04/2007, 14h06
  4. Comment fermer une Fenetre Modal avec Code ?
    Par Soulama dans le forum Langage
    Réponses: 19
    Dernier message: 13/07/2005, 11h17

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