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

Composants Java Discussion :

Comment créer plusieurs Panel dans une Frame


Sujet :

Composants Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut Comment créer plusieurs Panel dans une Frame
    Bonjour,

    Je voudrais le code permettant de créer des panels et des onglets comme dans la figure en pièce jointe.
    J'ai fait un premier essai, avec le code ci dessous, et je ne peut ni changer l'emplacement des composants, ni les afficher...je ne peut pas personnaliser non plus la position du panel créer, quels sont les paramètres qui laisse la manipulation de ces composants en mode disign aussi rigide?

    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
     
            this.setSize(new Dimension(700, 700));
            this.setVisible(true);
     
            JComponent contentPane = (JComponent)getContentPane();
            contentPane.setBorder(BorderFactory.createTitledBorder("SKI"));
     
            contentPane.setSize(new Dimension(357, 271));
     
            jCheckBox1.setText("jCheckBox1");
            jCheckBox1.setBorderPainted(true);
            jLabel1.setText("jLabel1");
            contentPane.setBounds(300, 300, 100, 100);
          // contentPane.add();
            this.getContentPane().add(jCheckBox1, null);
            this.getContentPane().add(jComboBox1, null);
            this.getContentPane().add(jComboBox2, null);
            this.getContentPane().add(jLabel1, null);
    Merci infiniment.
    Images attachées Images attachées  

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 47
    Points : 40
    Points
    40
    Par défaut
    T'as pas défini de Layout, ou tu ne l'as pas mis à null si tu n'en veux pas.
    Avec le peu de code montré c'est difficile de dire ce qui va pas, je comprend pas à quoi servent tel et tel composant.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par lotto90 Voir le message
    T'as pas défini de Layout, ou tu ne l'as pas mis à null si tu n'en veux pas.
    Avec le peu de code montré c'est difficile de dire ce qui va pas, je comprend pas à quoi servent tel et tel composant.
    voici le code complet:

    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
    47
    48
    49
    50
     
    import java.awt.Dimension;
     
    import java.awt.FlowLayout;
    import java.awt.Rectangle;
     
    import javax.swing.BorderFactory;
    import javax.swing.BoxLayout;
    import javax.swing.JButton;
    import javax.swing.JCheckBox;
    import javax.swing.JComboBox;
    import javax.swing.JComponent;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JLayeredPane;
     
    public class Frame1 extends JFrame {
        private JCheckBox jCheckBox1 = new JCheckBox();
        private JComboBox jComboBox1 = new JComboBox();
        private JComboBox jComboBox2 = new JComboBox();
        private JLabel jLabel1 = new JLabel();
        public Frame1() {
            try {
                jbInit();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
        private void jbInit() throws Exception {
           this.getContentPane().setLayout( null );
           this.setSize(new Dimension(700, 700));
            this.setVisible(true);
     
            JComponent contentPane = (JComponent)getContentPane();
            contentPane.setBorder(BorderFactory.createTitledBorder("SKI"));
     
            contentPane.setSize(new Dimension(357, 271));
     
            jCheckBox1.setText("jCheckBox1");
            jCheckBox1.setBorderPainted(true);
            jLabel1.setText("jLabel1");
            contentPane.setBounds(300, 300, 100, 100);
     
            this.getContentPane().add(jCheckBox1, null);
            this.getContentPane().add(jComboBox1, null);
            this.getContentPane().add(jComboBox2, null);
            this.getContentPane().add(jLabel1, null);
        }
    }
    je voudrais savoir quel valeur, je doit donner à setLayout pour chaque élément dans cette frame , pour que je puissse manipuler le contentPane ainsi que les différents composant que j'ai mis dedant. je m'excuse si je ne me suis pas bien exprimé.
    J'essai de faire une interface comme celle que j'ai envoyé dans le premier post, mais je n'arrive pas.
    Images attachées Images attachées  

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 47
    Points : 40
    Points
    40
    Par défaut
    Ah oui dans ce cas là tu ne peux pas mettre ton layout à null, il faut que tu fasses un layout pour le panel qui contient tes composants sinon rien va s'afficher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    contentPane.setBounds(300, 300, 100, 100);
    Je pige pas cette ligne, tu as fais un setSize de ce composant auparavant. A enlever je pense.

  5. #5
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Alors là comme ca moi ce que j'essayerais ce serait:

    - JPanel 1 :
    * Ajouté dans La JFrame dans le CENTER du BorderLayout (Layout par defaut du contentPane de la JFrame) (getContentPane().add(JPanel 1, BorderLayout.CENTER))
    * Layout: BoxLayout horizontal

    - JPanel 2 :
    *Ajouté dans le JPanel 1
    *Layout: BoxLayout vertical

    - JPanel 2-1 / 2-2 / 2-3 les JPanels correspondant a tes 3 boites à droites.

    - JTabedPane
    * ajouté dans le JPanel 1
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  6. #6
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Rien ne s'affiche, :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
     
    import ice.pilots.text.swing.TextArea;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
     
    import java.awt.GridLayout;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    import javax.swing.JPasswordField;
    import javax.swing.JTabbedPane;
     
    import javax.swing.JTextField;
     
    import oracle.jdeveloper.layout.BoxLayout2;
     
    public class Frame3 extends JFrame {
        private JPanel jPanel1 = new JPanel();
        private BoxLayout2 boxLayout21 = new BoxLayout2();
        private JPanel jPanel2 = new JPanel();
        private BoxLayout2 boxLayout22 = new BoxLayout2();
        private JPanel jPanel3 = new JPanel();
        private JPanel jPanel4 = new JPanel();
        private JPanel jPanelA = new JPanel();
        private JPanel jPanelB = new JPanel();
        private JPanel jPanelC = new JPanel();
     
        private JTabbedPane tabbedPane;
     
        public Frame3() {
            try {
                jbInit();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
        public void createPage1()
                {
     
                         jPanelA.setLayout( null );
     
                        JLabel label1 = new JLabel( "Username:" );
                        label1.setBounds( 10, 15, 150, 20 );
                         jPanelA.add( label1 );
     
                        JTextField field = new JTextField();
                        field.setBounds( 10, 35, 150, 20 );
                         jPanelA.add( field );
     
                        JLabel label2 = new JLabel( "Password:" );
                        label2.setBounds( 10, 60, 150, 20 );
                         jPanelA.add( label2 );
     
                        JPasswordField fieldPass = new JPasswordField();
                        fieldPass.setBounds( 10, 80, 150, 20 );
                         jPanelA.add( fieldPass );
                }
     
                public void createPage2()
                {
     
                         jPanelB.setLayout( new BorderLayout() );
     
                         jPanelB.add( new JButton( "North" ), BorderLayout.NORTH );
                         jPanelB.add( new JButton( "South" ), BorderLayout.SOUTH );
                         jPanelB.add( new JButton( "East" ), BorderLayout.EAST );
                         jPanelB.add( new JButton( "West" ), BorderLayout.WEST );
                         jPanelB.add( new JButton( "Center" ), BorderLayout.CENTER );
                }
     
                public void createPage3()
                {
     
                         jPanelC.setLayout( new GridLayout( 3, 2 ) );
     
                         jPanelC.add( new JLabel( "Field 1:" ) );
                         jPanelC.add( new TextArea() );
                         jPanelC.add( new JLabel( "Field 2:" ) );
                         jPanelC.add( new TextArea() );
                         jPanelC.add( new JLabel( "Field 3:" ) );
                         jPanelC.add( new TextArea() );
                }
        private void jbInit() throws Exception {
            this.setSize(new Dimension(405, 202));
            jPanel1.setLayout(boxLayout21);
            jPanel2.setLayout(boxLayout22);
            jPanel1.add(jPanel2, null);
            jPanel3.add(jPanel4, null);
            jPanel1.add(jPanel3, null);
            this.getContentPane().add(jPanel1, BorderLayout.CENTER);
            this.getContentPane().add(jPanel1, null);
     
     
            setTitle( "Tabbed Pane Application" );
            setSize( 300, 200 );
            setBackground(Color.gray);
     
            JPanel topPanel = new JPanel();
            topPanel.setLayout( new BorderLayout() );
            getContentPane().add( topPanel );
     
            // Create the tab pages
            createPage1();
            createPage2();
            createPage3();
     
            // Create a tabbed pane
            tabbedPane = new JTabbedPane();
            tabbedPane.addTab( "Page 1", jPanelA );
            tabbedPane.addTab( "Page 2", jPanelB );
            tabbedPane.addTab( "Page 3", jPanelC );
            topPanel.add( tabbedPane, BorderLayout.CENTER );
            jPanel1.add(tabbedPane, null);
            this.setVisible(true);
     
     
     
        }
    }

  7. #7
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par developppez Voir le message
    Rien ne s'affiche, :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
     
    import ice.pilots.text.swing.TextArea;
     
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
     
    import java.awt.GridLayout;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    import javax.swing.JPasswordField;
    import javax.swing.JTabbedPane;
     
    import javax.swing.JTextField;
     
    import oracle.jdeveloper.layout.BoxLayout2;
     
    public class Frame3 extends JFrame {
        private JPanel jPanel1 = new JPanel();
        private BoxLayout2 boxLayout21 = new BoxLayout2();
        private JPanel jPanel2 = new JPanel();
        private BoxLayout2 boxLayout22 = new BoxLayout2();
        private JPanel jPanel3 = new JPanel();
        private JPanel jPanel4 = new JPanel();
        private JPanel jPanelA = new JPanel();
        private JPanel jPanelB = new JPanel();
        private JPanel jPanelC = new JPanel();
     
        private JTabbedPane tabbedPane;
     
        public Frame3() {
            try {
                jbInit();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
        public void createPage1()
                {
     
                         jPanelA.setLayout( null );
     
                        JLabel label1 = new JLabel( "Username:" );
                        label1.setBounds( 10, 15, 150, 20 );
                         jPanelA.add( label1 );
     
                        JTextField field = new JTextField();
                        field.setBounds( 10, 35, 150, 20 );
                         jPanelA.add( field );
     
                        JLabel label2 = new JLabel( "Password:" );
                        label2.setBounds( 10, 60, 150, 20 );
                         jPanelA.add( label2 );
     
                        JPasswordField fieldPass = new JPasswordField();
                        fieldPass.setBounds( 10, 80, 150, 20 );
                         jPanelA.add( fieldPass );
                }
     
                public void createPage2()
                {
     
                         jPanelB.setLayout( new BorderLayout() );
     
                         jPanelB.add( new JButton( "North" ), BorderLayout.NORTH );
                         jPanelB.add( new JButton( "South" ), BorderLayout.SOUTH );
                         jPanelB.add( new JButton( "East" ), BorderLayout.EAST );
                         jPanelB.add( new JButton( "West" ), BorderLayout.WEST );
                         jPanelB.add( new JButton( "Center" ), BorderLayout.CENTER );
                }
     
                public void createPage3()
                {
     
                         jPanelC.setLayout( new GridLayout( 3, 2 ) );
     
                         jPanelC.add( new JLabel( "Field 1:" ) );
                         jPanelC.add( new TextArea() );
                         jPanelC.add( new JLabel( "Field 2:" ) );
                         jPanelC.add( new TextArea() );
                         jPanelC.add( new JLabel( "Field 3:" ) );
                         jPanelC.add( new TextArea() );
                }
        private void jbInit() throws Exception {
            this.setSize(new Dimension(405, 202));
            jPanel1.setLayout(boxLayout21);
            jPanel2.setLayout(boxLayout22);
            jPanel1.add(jPanel2, null);
            jPanel3.add(jPanel4, null);
            jPanel1.add(jPanel3, null);
            this.getContentPane().add(jPanel1, BorderLayout.CENTER);
            this.getContentPane().add(jPanel1, null);
     
     
            setTitle( "Tabbed Pane Application" );
            setSize( 300, 200 );
            setBackground(Color.gray);
     
            JPanel topPanel = new JPanel();
            topPanel.setLayout( new BorderLayout() );
            getContentPane().add( topPanel );
     
            // Create the tab pages
            createPage1();
            createPage2();
            createPage3();
     
            // Create a tabbed pane
            tabbedPane = new JTabbedPane();
            tabbedPane.addTab( "Page 1", jPanelA );
            tabbedPane.addTab( "Page 2", jPanelB );
            tabbedPane.addTab( "Page 3", jPanelC );
            topPanel.add( tabbedPane, BorderLayout.CENTER );
            jPanel1.add(tabbedPane, null);
            this.setVisible(true);
     
     
     
        }
    }
    les boxlayouts ne se crées pas comme ça . Ou en tout cas si tu les crées vide il faut après leur associé le jpanel et l'orientation. De plus personnellement je ne les mettrais pas en variable global.

    Si on ne fait pas d'initialisation en global (déclare juste tes variable si vraiment tu veux les avoir en global)

    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
     
       private void jbInit() throws Exception {
            this.setSize(new Dimension(405, 202));
            jPanel1 = new JPanel();
            jPanel1.setLayout(new BoxLayout(jPanel1, BoxLayout.X_AXIS));
              jPanel2= new JPanel();
            jPanel2.setLayout(new BoxLayout(jPanel2, BoxLayout.Y_AXIS));
            jPanel1.add(jPanel2);
    // les 3 pannels de gauche
            jPanel3= new JPanel();
            jPanel4= new JPanel();
           jPanel5= new JPanel();
           jPanel2.add(jPanel3);   
           jPanel2.add(jPanel4);
            jPanel2.add(jPanel5);
            this.getContentPane().add(jPanel1, BorderLayout.CENTER);
     
            setTitle( "Tabbed Pane Application" );
            setSize( 300, 200 );
            setBackground(Color.gray);
     
            // Create the tab pages
            createPage1();
            createPage2();
            createPage3();
     
            // Create a tabbed pane
            tabbedPane = new JTabbedPane();
            tabbedPane.addTab( "Page 1", jPanelA );
            tabbedPane.addTab( "Page 2", jPanelB );
            tabbedPane.addTab( "Page 3", jPanelC );
            jPanel1.add(tabbedPane); 
            this.setVisible(true);
     
     
     
        }
    par contre les JPanels 3, 4 et 5 etant vide tu vas pas voir grand chose s'afficher ... Donne leur une taille et une couleur de fond différente pour te rendre un peu compte de ce que ca fait.
    Pareil pour le JTabbed Pane donne lui une taille tant qu'il n'y a pas grand chose dedans
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  8. #8
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80
    Par défaut
    Merci beaucoup Lady, ça a résolu le problème d'affichage, mais mon premier souci reste toujours sans réponse, la création des panels comme dans l'image que j'ai posté dans le premier post, les pannels: "Tab placement", "tab policy" et "add/Remove" . je veux juste le code permettant de créer ces trois pannels.

  9. #9
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par developppez Voir le message
    Merci beaucoup Lady, ça a résolu le problème d'affichage, mais mon premier souci reste toujours sans réponse, la création des panels comme dans l'image que j'ai posté dans le premier post, les pannels: "Tab placement", "tab policy" et "add/Remove" . je veux juste le code permettant de créer ces trois pannels.
    Bah tu utilise Jpanel 3 , 4 et 5 avec la encore par exemple un BoxLayout vertical pour chacun et tu y ajoute tes objets .. ensuite pour entouré les panel regarde la classe TitledBorder
    Informaticienne le jour, créatrice de bijoux la nuit (https://www.facebook.com/La-Fée-Chro...07539656306271) et maman à plein temps !

  10. #10
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    254
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 254
    Points : 80
    Points
    80

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

Discussions similaires

  1. [débutant] plusieurs panels dans une même Jframe
    Par djerbafr dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 02/02/2007, 16h11
  2. Comment remplacer plusieurs caractères dans une chaîne?
    Par Antigonos Ier Gonatas dans le forum Général Python
    Réponses: 5
    Dernier message: 16/06/2006, 16h04
  3. [wxpython] creer deux panel dans une frame
    Par hysah dans le forum wxPython
    Réponses: 3
    Dernier message: 27/12/2005, 18h21
  4. Comment créer un commentaire dans une cellule d'Excel ?
    Par WebPac dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 26/04/2005, 09h23
  5. faire apparaitre et disparaitre un panel dans une frame
    Par Ghost Dog dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 22/04/2005, 01h55

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