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 :

JDialog dans un JPanel


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Par défaut JDialog dans un JPanel
    J'ai un panneau dans une fenetre, dans ce panneau j'ai un bouton, un clic sur ce bouton doit m'ouvrir une boite de dialogue. J'y arrive lorsque le bouton est directement dans la Fenetre mais je n'y arrive pas lorsqu'il est dans un JPanel.

    Mon main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Main {
     
        public Main() {
        }
     
        public static void main(String[] args) {
            FenDialog fen=new FenDialog();
            fen.setVisible(true);
        }
    }
    Ma classe FenDialog (la fenetre):
    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
     
    import java.awt.Container;
    import java.awt.FlowLayout;
    import javax.swing.JDialog;
     
     
    public class FenDialog extends javax.swing.JFrame {
     
     
        public FenDialog() {
            setTitle("Fenetre Appli");
            setSize(1024,768);
     
            Container contenu=getContentPane();
            contenu.setLayout(new FlowLayout());
            pan=new Panneau();
            contenu.add(pan);
        }
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new FenDialog().setVisible(true);
                }
            });
        }
     
        private Panneau pan;
    }
    et ma classe Panneau:
    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
    import javax.swing.JDialog;
     
     
    public class Panneau extends javax.swing.JPanel {
     
        public Panneau() {
            this.setSize(1000,800);
     
        }
     
     
        private void lanceDialActionPerformed(java.awt.event.ActionEvent evt) {
            JDialog bd=new JDialog(this,"Dialogue",true);
            bd.setSize(300,200);
            bd.setVisible(true);
        }
     
     
        private javax.swing.JButton lanceDial;
     
    }
    J'ai une erreur dans la classe Panneau au niveau du "JDialog bd=new JDialog(this,"Dialogue",true);"

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Tout à fait normal, le premier paramèter représente la (J)Frame parente du JDialog, or un JPanel n'est aucunement une (J)Frame

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Par défaut
    donc un bouton ouvrant une boite de dialogue ne peut pas etre dans un jPanel?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 66
    Par défaut
    Personne pour m'éclairer ?

  5. #5
    Membre confirmé Avatar de chaying
    Inscrit en
    Mars 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 84
    Par défaut Euh..
    Je voudrais pas trop m avancer mais pourquoi ne pas la declarer sans parametre ? que tu peux toujours definir apres.. Non ?

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux récupérer la fenêtre parente de n'importe quel composant avec la méthode getWindowAncestor(). Il suffit ensuite de caster en Frame pour pouvoir l'utiliser avec les constructeurs de JDialog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	Frame parentFrame = null;
    	Window parentWindow = SwingUtilities.getWindowAncestor(panel);
    	if (parentWindow instanceof Frame) {
    		parentFrame = (Frame) parentWindow;
    	}
    a++

  7. #7
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    Heu, Sinok t'a déjà aidé en te disant que le premier paramètre doit être une JFrame. Tu aurais pu en déduire la solution tout seul.

    L'une des solution pour s'en sortir serait de passer la FenDialog en paramètre du constructeur de la classe Panneau de manière à pouvoir la passer en paramètre du constructeur de la JDialog.

    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
     
    import javax.swing.JDialog;
     
     
    public class Panneau extends javax.swing.JPanel {
     
        private FenDialog parent;
     
        public Panneau(FenDialog parent) {
            this.setSize(1000,800);
            this.parent=parent;
     
        }
     
     
        private void lanceDialActionPerformed(java.awt.event.ActionEvent evt) {
            JDialog bd=new JDialog(parent,"Dialogue",true);
            bd.setSize(300,200);
            bd.setVisible(true);
        }
     
     
        private javax.swing.JButton lanceDial;
     
    }
    et dans le constructeur de FenDialog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      public FenDialog() {
            setTitle("Fenetre Appli");
            setSize(1024,768);
     
            Container contenu=getContentPane();
            contenu.setLayout(new FlowLayout());
            pan=new Panneau(this);
            contenu.add(pan);
        }

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

Discussions similaires

  1. Intégré une JDialog dans un JPanel
    Par loic911 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 30/04/2007, 16h45
  2. Fermer une JDialog modale à partir d'un bouton contenu dans un JPanel
    Par Alqualonde dans le forum Agents de placement/Fenêtres
    Réponses: 18
    Dernier message: 02/03/2007, 15h20
  3. Dessiner dans différents JPanels
    Par N@sH dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 20/05/2005, 16h39
  4. [JPanel] parcours d'objets dans un JPanel
    Par fleur1234 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 17/01/2005, 14h24
  5. Dessiner dans un JPanel
    Par Oliveuh dans le forum Composants
    Réponses: 5
    Dernier message: 19/07/2004, 13h13

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