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

 Java Discussion :

Utilisation de GridBagLayout


Sujet :

Java

  1. #1
    Futur Membre du Club Avatar de O2drey
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2018
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Utilisation de GridBagLayout
    Bonjour à tous,

    J'apprends le java et je suis bloquée avec l'utilisation des GridBagLayout. J'ai suivi pleins de tutos diverses et variés mais je suis un peu bloquée.
    J'essaie de faire ceci avec ma grille (les croix sont les endroits que je veux remplir avec mes composants) :

    _0_1_2_3_4
    0__X X X__ (les cases 1/2/3)
    1_____X X (les cases 3 et 4)


    Mais quand j'ajoute mon ScrollPane ça décalle tout

    Nom : test.png
Affichages : 387
Taille : 16,3 Ko

    Je ne comprends pas bien les gc.gridwidth, gc.gridheight, gc.weightx et gc.weighty je pense

    Voici mon code
    Code java : 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
     
    import java.awt.BorderLayout;
    import java.awt.GridLayout;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
    import java.awt.CardLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.JComboBox;
    import javax.swing.JColorChooser;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import java.util.*;
     
    public class main {
     
     
    	public static void main(String[] args) {
    		JFrame fenetre = new JFrame();
    		fenetre.setSize(800,600);
    		fenetre.setTitle("test");
    		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		fenetre.setLocationRelativeTo(null);
    		fenetre.setResizable(false);
    		fenetre.setVisible(true);
     
    		JPanel cardCreation = new JPanel(new GridBagLayout());
    		cardCreation.setBackground(Color.blue);
     
    		GridBagConstraints gc = new GridBagConstraints();
     
    		String[] messageStrings = {"1", "2", "3", "4", "5", "6"};
    		JComboBox cmbMessageList = new JComboBox<String>(messageStrings);
    		JButton boutonAjouter = new JButton("Ajouter");
    		JButton boutonGenerer = new JButton("Générer");
    		JTextArea textCreation = new JTextArea("je voudrai mettre du texte ici lalala");
    		JScrollPane spCreation = new JScrollPane(textCreation);
     
     
    		gc.gridx = 1;
    		gc.gridy = 0;
    		gc.gridwidth = 1;
    		gc.gridheight = 1;
    		gc.weightx = 0;
    		gc.weighty = 1;
    		gc.anchor = GridBagConstraints.PAGE_START;
    		cardCreation.add(cmbMessageList, gc);
     
     
    		gc.gridx = 2;
    		gc.gridy = 0;
    		cardCreation.add(boutonAjouter, gc);
     
    		gc.gridx = 3;
    		gc.gridy = 0;
    		cardCreation.add(boutonGenerer, gc);
    		//juste ces 3 boutons, sans le jscrollpane, sont alignés
    		//en haut au milieu mais dès que l'on ajoute le suivant ça décalle tout
     
    		gc.gridx = 3;
    		gc.gridy = 2;
    		gc.gridwidth = 2; //2 columns wide
    		gc.anchor = GridBagConstraints.LAST_LINE_END;
    		cardCreation.add(spCreation, gc);
     
     
    		fenetre.add(cardCreation, BorderLayout.CENTER);
    		fenetre.setVisible(true);
     
    	}	
     
    }

    J'espère que mon message est posté correctement car c'est mon premier post

    Merci beaucoup pour votre attention

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    1. Premièrement, tu ne peux pas faire démarrer gridx = 1, sans avoir quelque chose dans la case qui correspond à gridx=0. Lorsqu'une colonne est vide (toutes ses cases sont vides), elle ne prend aucune largeur. Pour résoudre le problème, tu peux simplement ajouter dans cette case, un composant qui n'affiche rien, un JPanel vide par exemple.
    2. gridwidth c'est le nombre de colonnes que prend le composant. Comme colspan de table/td en html. gridheight, c'est pareil en vertical, comme rowspan de html.
    3. weightx et weighty sont les poids que prennent les composants quand on leur demande de s'étendre sur la place disponible, donc avec un fill du type HORIZONTAL, VERTICAL ou BOTH.
      Quand tu dis j'ai un composant 1 fill=HORIZONTAL de weightx = 1, et un composant 2 fill=HORIZONTAL de weightx=2, les deux composants vont s'étendre dans largeur du conteneur, et le composant 2 prendra 2 fois plus de place que le composant 1 (il ne faut pas voir weightx comme un pourcentage ou une portion, mais il faut considérer sa valeur par rapport à la somme des valeurs de tous les weightx).


    Tu trouveras plus d'informations et de détails dans les discussions ci-dessous (ou j'explique déjà tous ces aspects) :



    Tu trouveras en particulier ici un petit code qui t'aidera dans ta mise au point.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club Avatar de O2drey
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2018
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup, grâce à tes explications j'ai refait des tests et j'ai compris l'utilisation de ce composant

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

Discussions similaires

  1. Utilisation du GridBagLayout
    Par Zarrok dans le forum Débuter
    Réponses: 1
    Dernier message: 29/03/2015, 21h26
  2. GridBagLayout utilisation du vide
    Par Sebeee dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 15/03/2012, 14h41
  3. utilisation du GridBagLayout
    Par troussepoil dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 17/04/2008, 17h56
  4. [Swing] Utilisation de GridBagLayout
    Par yelbied dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 05/02/2008, 11h40
  5. utilisation du GridBagLayout
    Par franfr57 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 11/11/2006, 10h02

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