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

Agents de placement/Fenêtres Java Discussion :

[JFrame] Question sur modal ??


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Points : 15
    Points
    15
    Par défaut [JFrame] Question sur modal ??
    Bonjour,

    Tout d'abord, j'explique ce que je fais. J'ai une fenêtre de base (JFrame) qui fait appel à une autre fenêtre (JDialog), afin de la gérer en modale. Lorsque je lance l'application, j'ai les 2 fenêtres qui apparaissent normalement, l'une sur l'autre, et lorsque je clique sur la premiere (celle de derrière), je peux la sélectionner la fermer etc ... Par contre la deuxième fenêtre sur le dessus reste quand même devant (modal). Ce que je voudrais faire, c'est de ne pas pouvoir sélectionner celle de derrière . J'ai même essayer de faire un setFocusable() sans aucun résultat.
    Si quelqu'un a une solution ??

    Merci d'avance

    Séb

  2. #2
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Points : 174
    Points
    174
    Par défaut
    dans le constructeur de ta JDialog, le booleen concernant la modalite, tu es sur que tu le passe a true ?
    The path of excess
    leads to the tower of wisdom.
    (Enigma)

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    oui,

    je mets a true pour la modalité, et la fentre reste devant l'autre quand même mais le problème c'est que je peux fermer celle de derrière.
    J'avais remarqué que suivant le look and feel ca marché ou pas (est ce que ca viendrait de la je ne sais pas! ) ou peut etre un bug .

    : c'est vraiment bizarre

    Je vais montrer mon 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    public class Class1 extends JPanel{
    	private JFrame frame;
     
    	public Class1(JFrame frame)
    	{
    		super();
    		this.frame = frame;
    	}
     
     
              public static void main(String[] args) {
     
                    JFrame maFenetre = new JFrame("application");
                    maFenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		 Class1  class1 = new GestLocative(maFenetre);
    		class1.setOpaque(true);
     
    		maFenetre.setContentPane(gestionLocative);
     
    		maFenetre.pack();
    		maFenetre.setVisible(true);
                    Class2 class2 = new Class2(maFenetre);
                     class2.setVisible(true);
              }
     
    public class Class2 extends JDialog {
     
            public Class2(JFrame frame) {
    		super(frame, true);
    		initialize();
    	}
     
    	private  void initialize() {
    		this.getContentPane().setLayout(null);
    		this.setSize(300,200);
    		this.getContentPane().add(getJTabbedPane(), null);
    	}
    }

  4. #4
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Points : 174
    Points
    174
    Par défaut
    ton probleme vient du fait que tu ne passes pas ta class1 en parametre du constructeur de ta class2.

    Ta classe 2 est modal par rapport a "maFenetre" et non pas par rapport a class1
    The path of excess
    leads to the tower of wisdom.
    (Enigma)

  5. #5
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Points : 265
    Points
    265
    Par défaut
    J'ai pris ton code et bidouillé un peu en gardant ta structure et ca marche tres bien. La fenetre est modale !!!
    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
    41
    42
    43
    44
    45
    46
    import javax.swing.*;
     
    public class Class1 extends JPanel{ 
       private JFrame frame; 
     
       public Class1(JFrame frame) 
       { 
          super(); 
          this.frame = frame; 
       } 
     
     
              public static void main(String[] args) { 
                    try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            }
            catch(Exception e) {
                e.printStackTrace();
            }
                    JFrame maFenetre = new JFrame("application"); 
                    maFenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
           Class1  class1 = new Class1(maFenetre); 
          class1.setOpaque(true); 
     
          maFenetre.getContentPane().add(class1); 
     
          maFenetre.pack(); 
          maFenetre.setVisible(true); 
                    Class2 class2 = new Class2(maFenetre); 
                     class2.setVisible(true); 
              } 
            }
     
     class Class2 extends JDialog { 
     
            public Class2(JFrame frame) { 
          super(frame, true); 
          initialize(); 
       } 
     
       private  void initialize() { 
          this.getContentPane().setLayout(null); 
          this.setSize(300,200); 
     
       } 
    }
    Avec ou sans le look & deel ca marche. Doit y avoir un autre souci dans ton code
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    pour répondre à narfiggo,

    tu as rajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       try {
                UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            }
            catch(Exception e) {
                e.printStackTrace();
            }
    et donc meme avec ca, ca ne marche pas ?

  7. #7
    Membre habitué
    Inscrit en
    Avril 2004
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 170
    Points : 174
    Points
    174
    Par défaut
    avec mes plus plates excuses, tout comme pour narfiggo ton code marche aussi chez moi, la class2 est bien modal avec ou sans look & deel
    The path of excess
    leads to the tower of wisdom.
    (Enigma)

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    Ce que je ne comprends c'est que j'ai refais comme toi les tests juste avec les classes Class1 et 2. Ca ne marche pas.
    Par contre si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /*      try {
                UIManager.setLookAndFeel(UIManager.getgetSystemLookAndFeelClassName());
            }
            catch(Exception e) {
                e.printStackTrace();
            }*/
              	 JFrame.setDefaultLookAndFeelDecorated(true);
    Dans ce cas la ca fonctionne!

  9. #9
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Points : 265
    Points
    265
    Par défaut
    Chez moi je met les look & feel dans tous les sens, n'importe ou dans le code, celui de l'OS, celui par defaut ou aucun, sur la frame principale, sur celle modale ou les deux,
    ET CA MARCHE TOUT LE TEMPS
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    ben je suis désolé, je ne sais pas quoi penser.
    Bref, je vais me débrouiller autrement.

    Pour info, j'utilise J2SE v 1.4.2_05 SDK, c'est tout

    merci quand même

    Séb

  11. #11
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Points : 265
    Points
    265
    Par défaut
    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
    import javax.swing.*; 
     
    public class Class1 extends JPanel{ 
       private JFrame frame; 
     
       public Class1(JFrame frame) 
       { 
          super(); 
          this.frame = frame; 
       } 
     
     
              public static void main(String[] args) { 
                    JFrame maFenetre = new JFrame("application"); 
                    maFenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
           Class1  class1 = new Class1(maFenetre); 
          class1.setOpaque(true); 
     
          maFenetre.getContentPane().add(class1); 
     
          maFenetre.pack(); 
          maFenetre.setVisible(true); 
                    Class2 class2 = new Class2(maFenetre); 
                     class2.setVisible(true); 
              } 
            } 
     
     class Class2 extends JDialog { 
     
            public Class2(JFrame frame) { 
          super(frame, true); 
          initialize(); 
       } 
     
       private  void initialize() { 
          this.getContentPane().setLayout(null); 
          this.setSize(300,200); 
     
       } 
    }
    Ca marche pas chez toi quand tu testes avec ce code :
    Si c'est le cas, je sais pas d'ou ca vient (j'utilise la meme version que toi de la jdk et je suis sous win***)
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    Oui même avec ce code ca ne marche pas
    En revanche moi je suis sous linux Mandrake 10

    Si tu as la solution ca m'arrangerais

  13. #13
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Points : 265
    Points
    265
    Par défaut
    T'es sous KDE ?
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  14. #14
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    yeap !!

    Est ce que tu avais le même problème sous windows ?

  15. #15
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Points : 265
    Points
    265
    Par défaut
    Sous windows ya pas de probleme.
    Je crois que c'est qu'avec KDE qui ya un souci. Si ta gnome ou un autre truc comme environnement utilisateur je crois que ca marche correctement.
    Ca vient peut etre aussi du fait que si tu ouvre un fenetre modale et que la fenetre principale est "vide" alors la fenetre ne sera pas modale (mais la je suis pas sur, faudrait tester...)
    Voila j'en sais pas plus.
    Essaye un autre environnement pour voir si ca fait pareil, et si ta fenetre principale est vide essaye de la remplir pour voir si c'est toujours non modale.

    Bon courage
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  16. #16
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    Bon je mets un résolu au post mais je n'ai pas réellement trouver la solution au problème. C'était juste pour vous dire que le problème est apparu avec la mandrake 10 et avec le look and feel par défaut. En passant sous windoz XP, en effet cela marche trés bien.
    Merci pour l'aide

    A+

    Séb

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

Discussions similaires

  1. [AJAX] Question sur popup modal et selection item
    Par rigolman dans le forum AJAX
    Réponses: 0
    Dernier message: 29/05/2011, 19h02
  2. Question sur construction de classe avec JFrame
    Par cmako dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 28/03/2007, 11h42
  3. petites questions sur les jframes
    Par popi182 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/08/2006, 20h24
  4. [JFrame] Question sur le multifenêtrage
    Par berg dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 30/10/2005, 21h20
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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