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 :

Prob GridBagLayout et JTable


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 89
    Par défaut Prob GridBagLayout et JTable
    Bonjour,

    Je suis débutant en java interface graphique, j'arrive un peu à me débrouiller, mais je lutte sur certains trucs.
    J'ai utiliser le GridBagLayout pour positionner différents composants (JButton, JLabel, JTextFied...).

    - Je rencontre actuellement un problème en effet j'ai positionner 4 boutons qui s'affiche au centre de ma fenêtre or j'aurais souhaiter les alignés sur la même ligne mais en haut de ma fenêtre, je n'y arrive pas.

    - Deuxième, j'aimerais intégrer un JTable sur cette même fenêtre qui se situerai juste en bas de ma rangée de bouton, qui accueillera par la suite le resultat d'une requête, j'aimerais savoir comment l'intégrer à cette fenetre

    Voici 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
    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
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.event.ActionListener;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    //import javax.swing.JScrollPane;
    //import javax.swing.JTable;
     
     
    /**
     *
     * 
     */
     
    public class FenetrePrincipale extends JFrame implements ActionListener{
     
        //Déclaration générale
        private JPanel monPanel = new JPanel();
        private GridBagConstraints gbc = new GridBagConstraints();
     
     
       //Déclaration des JLabel
       //private JLabel label_bienvenue = new JLabel ("BIENVENUE SUR xxxxxx, Lxxxxx de xxxx xxxx xxxx !");
     
     
        //Déclaration des JButton
        private JButton bouton_ajout = new JButton ("Ajouter...");
        private JButton bouton_modif = new JButton ("Modifier...");
        private JButton bouton_supp = new JButton ("Supprimer...");
        private JButton bouton_rech = new JButton ("Rechercher...");
     
     
       // private JScrollPane maScrollPanefilm;
     
       // private JTable table_liste_film;
     
     
       //**************************************************************************
       //Création de la Barre du Menu de la fenetre principale
       JMenuBar br=new JMenuBar();
     
     
       //Les Onglets du Menu
       JMenu P=new JMenu("Fichier");
       JMenu V=new JMenu("Affichage");
       JMenu R=new JMenu("Recherche");
       JMenu A=new JMenu("Aide");
     
     
       //Sous Onglets de l'onglet Fichier
       JMenuItem Ajout=new JMenuItem("Nouveau...");
       JMenuItem Modif=new JMenuItem("Modifier...");
       JMenuItem Supp=new JMenuItem("Supprimer...");
       JMenuItem Quitter=new JMenuItem("Quitter");
     
     
       //Sous Onglets de l'onglet Affichage
       JMenuItem Actu=new JMenuItem("Actualiser la liste des films");
     
     
       //Sous Onglets de l'onglet Recherche
       JMenuItem Rec_titre=new JMenuItem("Recherche par Titre");
       JMenuItem Rec_realisateur=new JMenuItem("Recherche par Réalisateur");
       JMenuItem Rec_acteur=new JMenuItem("Recherche par Acteur");
     
     
       //Sous Onglets de l'onglet Aide
       JMenuItem About=new JMenuItem("A propos de xxxxx");
     
     
     
        public FenetrePrincipale(){
            super();
     
            //Attribution des écouteurs aux sous onglets de la barre de menus
            Ajout.addActionListener(this);
            About.addActionListener(this);
            Supp.addActionListener(this);
            Actu.addActionListener(this);
            Quitter.addActionListener(this);
     
            bouton_ajout.addActionListener(this);
     
            build();
            this.setVisible(true);
        }
        //**************************************************************************
     
     
        //******************************************************************************
        private void build(){
     
     
            setTitle("Rxxxxx - Gxxxxxxx");
            setSize(1000,768);
            setLocationRelativeTo(null);
            setResizable(false);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
     
            //On définit le Grid
            monPanel.setLayout (new GridBagLayout());
     
     
            //On place les label
            gbc.fill = GridBagConstraints.BOTH;
            gbc.insets = new Insets (10,10,10,10);
     
           // gbc.gridx = 3;
            //gbc.gridy = 0;
            //monPanel.add(label_bienvenue,gbc);
     
     
     
            //On place les boutons
            gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.gridwidth = 2;
            gbc.fill = GridBagConstraints.NONE;
            monPanel.add(bouton_ajout,gbc); //bouton ajouter
     
            gbc.gridx = 2;
            gbc.gridy = 0;
            gbc.gridwidth = 2;
            gbc.fill = GridBagConstraints.NONE;
            monPanel.add(bouton_modif,gbc); //bouton modifier
     
            gbc.gridx = 4;
            gbc.gridy = 0;
            gbc.gridwidth = 2;
            gbc.fill = GridBagConstraints.NONE;
            monPanel.add(bouton_supp,gbc); //bouton supprimer
     
            gbc.gridx = 6;
            gbc.gridy = 0;
            gbc.gridwidth = 2;
            gbc.fill = GridBagConstraints.NONE;
            monPanel.add(bouton_rech,gbc); //bouton recherche
     
            //On place le JTable
           // gbc.gridx = 0;
            //gbc.gridy = 1;
            //gbc.gridwidth = 8;
            //gbc.weightx=100;
            //gbc.weighty=100;
           // monPanel.add(maScrollPanefilm,gbc);
     
     
     
            //On attache monPanel
            this.getContentPane().add(monPanel);
     
     
            //On integre Les Onglets dans le Menu
            br.add(P);
            br.add(V);
            br.add(R);
            br.add(A);
     
     
            //On ajoute Les Sous-onglets dans leur onglets respectives ds barre de menu "Fichier"
            P.add(Ajout);
            P.add(Modif);
            P.add(Supp);
            P.add(Quitter);
            V.add(Actu);
            R.add(Rec_titre);
            R.add(Rec_realisateur);
            R.add(Rec_acteur);
            A.add(About);
     
            this.setJMenuBar(br);
     
        }
    //*************************************************************************************
     
     
        //**********************************************************************************
        public void actionPerformed (ActionEvent e) {
            if(e.getActionCommand().equals("Nouveau...")){
                new FenetreAjout().setVisible(true);
            }
            if (e.getActionCommand().equals("A propos de xxxxx")){
                new FenetreAbout().setVisible(true);
            }
            if (e.getActionCommand().equals("Quitter")){
                System.exit(0); //Quitte le programme
            }
            if (e.getSource() == bouton_ajout){
                new FenetreAjout().setVisible(true);
            }
     
     
        }
     //**************************************************************************************
     
     
    }
    Je vous remercie d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 89
    Par défaut


    Voici l'imprime écran pour le message précédent afin que vous puissiez voir à quoi cela ressemble. Je voudrais donc mettre cette rangée de bouton (Ajouter, Modifier, Supprimer, Rechercher) plus haut sur la fenêtre, et non la centrer comme elle est actuellement.
    Images attachées Images attachées  

  3. #3
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    N'étant pas un grand fan du GridBagLayout, je vais te donner une solution qui utilise d'autres layouts.

    Tu peux utiliser un BorderLayout pour ton Panel principal (c'est le Layout par défaut du ContentPane).
    Dans la partie NORTH, tu mets un JPanel (contenant tes boutons) avec un FlowLayout centré :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new FlowLayout(FlowLayout.CENTER);
    Dans la partie CENTER, tu mets directement ta table.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 89
    Par défaut
    En fesant ce que tu m'as dit cela veut dire que je supprime mes GridBagLayout

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Par défaut
    Bonjour,

    Essaie peut être gbc.anchor = GridBagConstraints.PAGE_START;

    Sinon tu as ces 2 tutos qui sont vraiment bien:
    http://louis.cova.neuf.fr/blocs-notes/page11.html
    http://bbclone.developpez.com/fr/jav...gridbaglayout/

  6. #6
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Oui, car comme je l'ai précisé, je ne suis pas un fan du GridBag. Je t'ai fourni une solution qui te permette d'avoir le même rendu visuel.

    Après, si tu tiens à te servir du GridBag (exercice imposé, volonté d'apprendre à s'en servir, etc.), tu peux tout simplement ignorer ma réponse

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 89
    Par défaut
    humm a quel nivo laurentze faut que je mette le
    gbc.anchor = GridBagConstraints.PAGE_START; ?

  8. #8
    Membre confirmé
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Par défaut
    Ce code devrait faire ce que tu veux:

    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
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
     
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.event.ActionListener;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    //import javax.swing.JScrollPane;
    //import javax.swing.JTable;
     
     
    /**
     *
     * 
     */
     
    @SuppressWarnings("serial")
    public class FenetrePrincipale extends JFrame implements ActionListener{
     
        //Déclaration générale
        private JPanel monPanel = new JPanel();
        private GridBagConstraints gbc = new GridBagConstraints();
     
     
       //Déclaration des JLabel
       //private JLabel label_bienvenue = new JLabel ("BIENVENUE SUR xxxxxx, Lxxxxx de xxxx xxxx xxxx !");
     
     
        //Déclaration des JButton
        private JButton bouton_ajout = new JButton ("Ajouter...");
        private JButton bouton_modif = new JButton ("Modifier...");
        private JButton bouton_supp = new JButton ("Supprimer...");
        private JButton bouton_rech = new JButton ("Rechercher...");
     
     
       // private JScrollPane maScrollPanefilm;
     
       // private JTable table_liste_film;
     
     
       //**************************************************************************
       //Création de la Barre du Menu de la fenetre principale
       JMenuBar br=new JMenuBar();
     
     
       //Les Onglets du Menu
       JMenu P=new JMenu("Fichier");
       JMenu V=new JMenu("Affichage");
       JMenu R=new JMenu("Recherche");
       JMenu A=new JMenu("Aide");
     
     
       //Sous Onglets de l'onglet Fichier
       JMenuItem Ajout=new JMenuItem("Nouveau...");
       JMenuItem Modif=new JMenuItem("Modifier...");
       JMenuItem Supp=new JMenuItem("Supprimer...");
       JMenuItem Quitter=new JMenuItem("Quitter");
     
     
       //Sous Onglets de l'onglet Affichage
       JMenuItem Actu=new JMenuItem("Actualiser la liste des films");
     
     
       //Sous Onglets de l'onglet Recherche
       JMenuItem Rec_titre=new JMenuItem("Recherche par Titre");
       JMenuItem Rec_realisateur=new JMenuItem("Recherche par Réalisateur");
       JMenuItem Rec_acteur=new JMenuItem("Recherche par Acteur");
     
     
       //Sous Onglets de l'onglet Aide
       JMenuItem About=new JMenuItem("A propos de xxxxx");
     
     
     
        public FenetrePrincipale(){
            super();
     
            //Attribution des écouteurs aux sous onglets de la barre de menus
            Ajout.addActionListener(this);
            About.addActionListener(this);
            Supp.addActionListener(this);
            Actu.addActionListener(this);
            Quitter.addActionListener(this);
     
            bouton_ajout.addActionListener(this);
     
            build();
     
            setVisible(true);
     
        }
        //**************************************************************************
     
    	//******************************************************************************
        private void build(){
     
            setTitle("Rxxxxx - Gxxxxxxx");
            setSize(1000,768);
            setLocationRelativeTo(null);
            setResizable(false);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
     
            //On définit le Grid
            monPanel.setLayout (new GridBagLayout());
     
     
            //On place les label
    		gbc.weightx=0.25;
    		gbc.weighty=0.25;
            gbc.anchor = GridBagConstraints.PAGE_START;
            gbc.gridheight = GridBagConstraints.REMAINDER;
            gbc.insets = new Insets (10,10,10,10);
     
            //On place les boutons
            gbc.gridx = 0;
            gbc.gridy = 0;
            monPanel.add(bouton_ajout,gbc); //bouton ajouter
     
            gbc.gridx = 2;
            gbc.gridy = 0;
            monPanel.add(bouton_modif,gbc); //bouton modifier
     
            gbc.gridx = 4;
            gbc.gridy = 0;
            gbc.gridwidth = GridBagConstraints.RELATIVE;
            monPanel.add(bouton_supp,gbc); //bouton supprimer
     
            gbc.gridx = 6;
            gbc.gridy = 0;
            gbc.gridwidth = GridBagConstraints.REMAINDER;
            monPanel.add(bouton_rech,gbc); //bouton recherche
     
            //On attache monPanel
            getContentPane().add(monPanel);
     
     
            //On integre Les Onglets dans le Menu
            br.add(P);
            br.add(V);
            br.add(R);
            br.add(A);
     
            //On ajoute Les Sous-onglets dans leur onglets respectives ds barre de menu "Fichier"
            P.add(Ajout);
            P.add(Modif);
            P.add(Supp);
            P.add(Quitter);
            V.add(Actu);
            R.add(Rec_titre);
            R.add(Rec_realisateur);
            R.add(Rec_acteur);
            A.add(About);
     
            this.setJMenuBar(br);
     
        }
    //*************************************************************************************
     
     
        //**********************************************************************************
        public void actionPerformed (ActionEvent e) {
        }
     //**************************************************************************************
     
        public static void  main(String[] args){
        	new FenetrePrincipale();
        }
     
    }
    Dis moi si tu as des question.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 89
    Par défaut
    ça marche, je te remercie par contre j'ai quelques questions:

    A quoi sert ?
    GridBagConstraints.PAGE_START
    GridBagConstraints.REMAINDER
    GridBagConstraints.RELATIVE

  10. #10
    Membre confirmé
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2009
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2009
    Messages : 152
    Par défaut
    le paramètre gbc.anchor sert à définir la position du composant au niveau de sa cellule. Il peut être centré, sur la gauche, en haut à gauche etc...

    le paramètre gbc.gridheight sert à définir le nombre de cellule occupé verticalement par le composant

    le paramètre gbc.gridwidth sert à définir le nombre de cellule occupé horizontalement par le composant.

    Il est fortement conseillé (c'est pas moi qui le dis mais les tutos que j'ai lu) de toujours mettre ces deux derniers paramètres à la valeur GridBagConstraints.RELATIVE s'il s'agit de l'avant dernier composant de la ligne ou de la colonne et à GridBagConstraints.REMAINDER si il s'agit du dernier.

    Je te conseille une nouvelle fois de lire les tutos, il sont super bien (moi même j'ai réussi à comprendre), ce sera beaucoup mieux expliqué...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 89
    Par défaut
    je te remercie laurentze, je vais continuer à avancer sur mon projet

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

Discussions similaires

  1. JTable, prob getValueAt : indexOutOfBounds
    Par Nargonath dans le forum Composants
    Réponses: 2
    Dernier message: 26/04/2010, 16h59
  2. prob avec un jtable
    Par offspring dans le forum Composants
    Réponses: 8
    Dernier message: 03/12/2007, 19h57
  3. prob impression JTable
    Par gnaoui_9999 dans le forum Composants
    Réponses: 6
    Dernier message: 26/05/2007, 13h42
  4. [Kylix] prob listview
    Par sdoura2 dans le forum EDI
    Réponses: 1
    Dernier message: 22/10/2002, 21h37
  5. Réponses: 9
    Dernier message: 12/08/2002, 07h38

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