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 :

insets illustration GridBagLayout


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 28
    Par défaut insets illustration GridBagLayout
    bonjour
    ci dessous une portion de code pour pouvoir espacer/separer un composant avec inset du Gridbaglayout.
    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
    import java.awt.Color;
    public class exo3 extends JFrame{
    	JPanel leconteneur =new JPanel();
    	JButton lebtn=new JButton("1");
    	JButton button2 = new JButton("2");
        JButton button3 = new JButton("3");
    	public exo3(){
    		this.setTitle("Fenetre gridbaglayout");
    		this.setSize(500, 420);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		leconteneur.setBackground(Color.RED);
     
    		leconteneur.setLayout(new GridBagLayout());
    		GridBagConstraints gbc=new GridBagConstraints();
    		gbc.gridx = 0;
    		gbc.gridy = 0;
    		gbc.insets=new Insets(15, 5, 0, 0);
    		leconteneur.add(button3,gbc);
     
    		gbc1.gridx=0;
    		gbc1.gridy=1;
    		//gbc1.insets=new Insets(15, 5, 0, 0);
    		leconteneur.add(lebtn,gbc);
     
     
    	    gbc.gridx = 1;
    	    gbc.gridy = 1;
    	    //gbc.insets=new Insets(15, 50, 0, 0);
    	    leconteneur.add(button2,gbc);
     
    	       this.setContentPane(leconteneur);
    		this.setVisible(true);
     
    	}
     
    	public static void main(String[] args) {
    		new exo3();
    	}
     
    }
    je veux seulement que le bouton button3 ne soit pas collé.
    qu'il se decale en haut et à gauche(left). Mais au rendu les bouton button2 et button1 son décalés.
    Simplement je veux aborder les propriétés de ce LayoutManager
    merci pour votre eclairage.

  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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    les arguments du constructeur de la classe Inset sont dans l'ordre :
    - haut
    - gauche
    - bas
    - droite

    Donc avec tes paramètres 15, 5, 0, 0, ton bouton est forcément collé à celui qui se trouve en dessous et décallé vers la droité de 15 pixels par rapport à un bouton que tu metterais en dessous de lui avec un Inset(0,0,0,0).

    De plus je relève 2 coquilles dans le code que tu joins, en plus des import manquants :
    - tu indiques la position de ton bouton "1" (lebtn) avec gbc1.gridx=0, mais la variable gbc1 n'existe pas
    - ensuite, tu places le bouton lebtn avec la variable gbc donc il remplace le bouton button3 qui a été placé avec ce même gbc juste avant.

    Je te conseille en plus de récréer le GridBagConstraint pour chaque bouton pour éviter qu'il ne reprennent les paramètres du précédent, à moins que c'est ce que tu cherches à faire.

    Voici ton code modifié (je n'ai pas modifié les coordonnées de chaque bouton, donc ils se placent tel que le bouton "3" est au dessus du "1", non collé à ce lui-ci, et le "2" est à droite du "1", collé lui.

    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
    import java.awt.Color;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    public class exo3 extends JFrame{
    	JPanel leconteneur =new JPanel();
    	JButton lebtn=new JButton("1");
    	JButton button2 = new JButton("2");
        JButton button3 = new JButton("3");
    	public exo3(){
    		this.setTitle("Fenetre gridbaglayout");
    		this.setSize(500, 420);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		leconteneur.setBackground(Color.RED);
     
    		leconteneur.setLayout(new GridBagLayout());
    		GridBagConstraints gbc=new GridBagConstraints();
    		gbc.gridx = 0;
    		gbc.gridy = 0;
    		gbc.insets=new Insets(0, 0, 5, 0);
    		leconteneur.add(button3,gbc);
     
    		gbc=new GridBagConstraints();
    		gbc.gridx=0;
    		gbc.gridy=1;
    		leconteneur.add(lebtn,gbc);
     
     
    		gbc=new GridBagConstraints();
    		gbc.gridx = 1;
    	    gbc.gridy = 1;
    	    leconteneur.add(button2,gbc);
     
    	    this.setContentPane(leconteneur);
    		this.setVisible(true);
     
    	}
     
    	public static void main(String[] args) {
    		new exo3();
    	}
     
    }
    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
    Membre averti
    Inscrit en
    Février 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 28
    Par défaut
    en plus de ne pas être collé, je veux que le button3(seulement lui) soit décalé à gauche;
    j'essaie le code ci dessous, mais je constate aussi qu'en plus du button3; le button2 est décalé(les boutons button2 et button1 ne doivent pas être espacé).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    gbc.gridx = 0;
    gbc.gridy = 0;
    gbc.insets=new Insets(0, 5, 5, 0);
    leconteneur.add(button3,gbc);
    Merci

    lepieux

  4. #4
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    Mais tu as sur que tu récréés bien une nouvelle instance de GridBagConstraint pour chaque bouton, ou que tu reset les insets avant chaque application du même gbc à un autre bouton.

    Si le bouton "2" se décale comme le bouton "3", c'est probablement parce qu'il a les mêmes paramètres, en particulier les mêmes insets.
    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.

  5. #5
    Membre averti
    Inscrit en
    Février 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 28
    Par défaut
    je reset les gbc avant chaque application
    ci contre tout le 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
    import java.awt.Color;
    import java.awt.GridBagConstraints;
    import java.awt.GridBagLayout;
    import java.awt.Insets;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
     
     
    public class exo3 extends JFrame{
    	JPanel leconteneur =new JPanel();
    	JButton lebtn=new JButton("1");
    	JButton button2 = new JButton("2");
        JButton button3 = new JButton("3");
    	public exo3(){
    		this.setTitle("Fenetre gridbaglayout");
    		this.setSize(500, 420);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLocationRelativeTo(null);
    		leconteneur.setBackground(Color.RED);
     
    		leconteneur.setLayout(new GridBagLayout());
    		GridBagConstraints gbc=new GridBagConstraints();
     
    		gbc.gridx = 0;
    		gbc.gridy = 0;
    		gbc.insets=new Insets(0, 5, 5, 0);
    		leconteneur.add(button3,gbc);
     
    		gbc=new GridBagConstraints();
    		gbc.gridx=0;
    		gbc.gridy=1;
    		//gbc.insets=new Insets(0, 0, 0, 0);
    		leconteneur.add(lebtn,gbc);
     
    	    gbc=new GridBagConstraints();
    	    gbc.gridx = 1;
    	    gbc.gridy = 1;
    	   // gbc.insets=new Insets(0, 0, 0, 0);
    	    leconteneur.add(button2,gbc);
     
    	    this.setContentPane(leconteneur);
    		this.setVisible(true);
    		}
     
    	public static void main(String[] args) {
    		new exo3();
    	}
     
    }

  6. #6
    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 : 56
    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
    Billets dans le blog
    2
    Par défaut
    En effet, j'avais pas pensé à ça : le fait d'ajouter des insets agrandit les colonnes et lignes de la grille. Les boutons suivants se plaçant au centre, ils se retrouvent avec des marges.

    ajoute gbc.insets=new Insets(0, -5, 0, 0);
    avant l'ajout de lebtn et avant l'ajout de button2 et ce sera ok.
    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.

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

Discussions similaires

  1. [awt] Ajouter un Insets sur un GridBagLayout
    Par dib258 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 22/01/2006, 23h24
  2. Réponses: 38
    Dernier message: 22/07/2005, 08h30
  3. [Swing] probleme de GridBagLayout
    Par calypso dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 13/04/2005, 17h26
  4. [débutant]GridBagLayout
    Par pingoui dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 13/12/2004, 17h43

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