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

AWT/Swing Java Discussion :

GridBagLayout besoin d'aide


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut GridBagLayout besoin d'aide
    Bonjour,

    J'ai X nombre de JLabel et de JTextField et j'amerais le disposer en 2 colonne et X ligne avec comme dimension 150,20 pour les textfield.
    Voici un petit schéma :

    Comment faire cela ? Car je suis un peu perdu avec ce GridBagLayout

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Et dans la deuxième colonne de ton image, tu y mets autre chose ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut
    La partie droite de la fenêtre, pas besoin de s'en occuper. Elle est déjà créée.
    La partie gauche c'est un conteneur. Et la droite aussi mais pas besoin de s'en occuper.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Tu as commencé à écrire du code, ou tu veux qu'on te ponde tout ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut
    Ben j'ai fais une boucle qui crée les JLabel et JTextField, mais après je ne sais pas comment les gérer avec le GridBagLayout .

    Mais voici la boucle :
    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
            private JPanel createLabelField(JPanel panel){
                    //contraintes du layout
                    GridBagConstraints c = new GridBagConstraints();
                    //ajout des labels "headers"
                    panel.add(new JLabel("Noms"));
                    panel.add(new JLabel("Notes"));
                    //création des tableau de label et jtf
                    JLabel labels[] = new JLabel[noms.size()];
                    JTextField jtf[] = new JTextField[noms.size()];
                    //boucle de création des labels et jtf en fonction du nombre d'élèves
                for(int i = 0; i< noms.size();i++){
                    String nom = (String) noms.get(i);
                    Dimension dim = new Dimension(150,20);
                    labels[i] = new JLabel(nom);
                    labels[i].setMaximumSize(dim);
                    jtf[i] = new JTextField();
                    jtf[i].setMaximumSize(dim);
     
                    panel.add(labels[i],c);
                    panel.add(jtf[i],c);
                }
     
                return panel;
            }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut
    Alors, pourriez vous m'aider ? C'est juste pour les contraintes, pour que mes JLabel et JTF se placent correctement.

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    C'est ça 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
     
    package test;
     
    import java.awt.Dimension;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
     
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.SwingUtilities;
     
    public class Test extends JFrame {
     
    	public void initAndDisplay() {
    		GridBagLayout gbl = new GridBagLayout();
    		GridBagConstraints gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0,
    				GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(2,
    						2, 2, 2), 0, 0);
     
    		for (int i = 0; i < 10; i++) {
    			JLabel label = new JLabel("Label " + i);
    			label.setPreferredSize(new Dimension(75, 20));
    			gbc.gridx = 0;
    			gbc.gridy = i;
    			gbl.setConstraints(label, gbc);
    			this.add(label);
     
    			JTextField texte = new JTextField("Texte " + i);
    			texte.setPreferredSize(new Dimension(150, 20));
    			gbc.gridx = 1;
    			gbl.setConstraints(texte, gbc);
    			this.add(texte);
    		}
     
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setTitle("Test");
    		this.setLayout(gbl);
    		this.pack();
    		this.setVisible(true);
    	}
     
    	public static void main(String[] args) {
    		SwingUtilities.invokeLater(new Runnable() {
    			public void run() {
    				Test fenetre = new Test();
    				fenetre.initAndDisplay();
    			}
    		});
    	}
     
    }

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 76
    Par défaut
    Salut,

    je me permets de m'incruster sur ce topic, en effet, je decouvre le GridBagLayout moi aussi et j'essaye de refaire la disposition que tu souhaites.

    les differences:
    Je ne passe pas par une boucle pour creer mes JLabel et JTextField,
    je prefere tout coder pas à pas au début, histoire ce que soit plus simple a comprendre par la suite

    Voici la description:
    une JFrame avec un BorderLayout et 2 JPanel (WEST et EAST)

    dans le JPanel WEST,
    Ligne 1:
    un titre= JLabel

    Ligne 2:
    une requete (inserez votre nom)= JLabel
    un JTextField

    Ligne 3:
    une requete (inserez votre prenom)= JLabel
    un JTextField

    Ligne 4:
    une requete (inserez votre age)= JLabel
    un JTextField

    Ligne 5:
    3 boutons: valider, effacer, fermer

    Voici le code, j'ai fait
    la JFrame, son BorderLayout, ses 2 JPanel,
    je commence a placer mes composants dans le JPanel WEST mais y'a deja un probleme lorsque j'affiche mon second composant qui vient se coller au 1°

    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
     
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
     
    import java.awt.BorderLayout;
    import java.awt.GridBagLayout;
    import java.awt.GridBagConstraints;
     
    import java.awt.Insets;
    import java.awt.Color;
    import java.awt.Dimension;
     
    public class WinGridBagLayout02 extends JFrame {
     
    	// objets crees/importes
    	JPanel panContainer= new JPanel();
     
    	JPanel panEast= new JPanel();
    	JPanel panWest= new JPanel();
     
    	GridBagLayout gblPanWest= new GridBagLayout();
    	GridBagConstraints gbcPW= new GridBagConstraints();
     
    	GridBagLayout gblPanEast= new GridBagLayout();
    	GridBagConstraints gbcPE= new GridBagConstraints();
     
    	JLabel lblPWTitre= new JLabel("Voici le titre du panWest de cette fenetre");
    	JLabel lblPWNom= new JLabel("Votre nom");
    	// variables
     
    	// constructeur
    	WinGridBagLayout02() {
    		this.setSize(1000, 400);
    		this.setTitle("utilisation d'un GridBagLayout");
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    		this.setResizable(true);
    		//--------------------------------------------------------------------------------------------------------
    		this.setContentPane(panContainer);
    		this.setLayout(new BorderLayout());
     
    		this.getContentPane().add(panEast, BorderLayout.EAST);
    		this.getContentPane().add(panWest, BorderLayout.WEST);
     
    		this.panEast.setBackground(Color.black);
    		this.panWest.setBackground(Color.white);
     
    		/*
    		// A quoi ca sert?
    		this.panEast.setSize(this.getWidth()/ 2, this.getHeight());
    		this.panWest.setSize(this.getWidth()/ 2, this.getHeight());
    		//*/
     
    		this.panEast.setPreferredSize(new Dimension(this.getWidth()/ 2, this.getHeight()));
    		this.panWest.setPreferredSize(new Dimension(this.getWidth()/ 2, this.getHeight()));
     
    		//--------------------------------------------------------------------------------------------------------
     
    		/*
    		 *  fait planter l'appli s'il est mis a cet endroit
    		 *  on peut le placer juste avt l'instruction this.setVisible(true); ms le resultat est different
    		 *  peut on attribuer un GBL à un JPanel ? 
    		 * ***** this.panWest.setLayout(gblPanWest); *****  ECRIT A LA FIN COMME INDIQUE
    		 */
     
    		//** contraintes pour le 1° JLabel de panWest: apparait seul sur la seconde ligne
    		gbcPW.gridx= 0;
    		gbcPW.gridy= 1; // 2° ligne
    		gbcPW.gridwidth= GridBagConstraints.REMAINDER; // le JLabel est le dernier de la ligne
    		gbcPW.gridheight= 1;
    		gbcPW.anchor= GridBagConstraints.CENTER;
    		gbcPW.insets= new Insets(10, 10, 10, 10); // def des marges haute, gauche, basse, droite
    		gbcPW.ipadx= 0;
    		gbcPW.ipady= 0;
    		gbcPW.weightx= 100;
    		gbcPW.weighty= 100;
    		gbcPW.fill= GridBagConstraints.NONE; // interdire le redimensionnement
    		this.panWest.add(lblPWTitre, gbcPW); // ajouter le JLabel au panWest par le biais de la contrainte gbcPW
     
    		//** contraintes pour le 2° JLabel de panWest: apparait en 1° sur la 3° ligne
    		gbcPW.gridx= 0;
    		gbcPW.gridy= 2;
    		gbcPW.gridwidth= 1;
    		gbcPW.gridheight= 1;
    		gbcPW.anchor= GridBagConstraints.LINE_START;
    		gbcPW.insets= new Insets(10, 10, 10, 10);
    		gbcPW.ipadx= 0;
    		gbcPW.ipady= 0;
    		gbcPW.weightx= 100;
    		gbcPW.weighty= 100;
    		gbcPW.fill= GridBagConstraints.NONE;
    		this.panWest.add(lblPWNom, gbcPW);
     
    		//--------------------------------------------------------------------------------------------------------
    		this.panWest.setLayout(gblPanWest);
    		this.pack();
    		this.setVisible(true);
    	}
    	// getters
     
    	// setters
     
    	// methodes de classe
    }
    Voilà, je declare et definis toutes les contraintes pour chaque composant, histoire de savoir ce que je fais.

    le JPanel EAST aura des JLabel qui afficheront les valeurs que j'aurai rentré.

    Si tu (vous), fr1man, as (avez) l'explication (pas le code), je prends.

    Merci
    a+
    areuh

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 76
    Par défaut
    HOP!!!!

    j'ai trouvé!!!!
    mon:
    this.panWest.setLayout(gblPanWest);

    etait déclaré trop bas dans le constructeur, en fait faut le placer avant de s'attaquer aux attributs des 2 JPanel.

    ok c'est tout bon pour moi, mais comme j'aurai d'autres problemes, je reviendrai poster ici meme... a moins qu'un gentil modo ou le proprio de ce post ne me demande d'en ouvrir 1 spécifique.

    a+
    areuh

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 76
    Par défaut
    re,

    Au fait,

    cette adresse (que j'aimerai qu'on m'explique ce que c'est por favor)
    http://bbclone.developpez.com/fr/jav...?page=sommaire

    donne une super explication.

    a+
    areuh

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

Discussions similaires

  1. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  2. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29
  3. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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