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 du GridBagLayout


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Utilisation du GridBagLayout
    Bonjour,

    Je souhaite utiliser un GridBagLayout afin de mettre en forme une grille (je ne souhaite pas utiliser un GridLayout).
    Pour illustrer mes propos voici le code que j'ai écrit :
    D'abord la grille :
    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
    import javax.swing.*;
    import java.awt.*;
     
    public class Grille extends JPanel{
     
    	private int taille; // la taille est donnée au contructeur
    	private Case[] tabcase;
     
    	public Grille(int t){
    		super();
     
    		int tabfiller = 0;
     
    		this.taille = t;
    		this.tabcase = new Case[taille*taille];
    		this.setBackground(Color.WHITE);
            this.setSize(new Dimension(850,850));
            this.setLocation(new Point(0,0));
     
    		//on définit le gestionnaire qui sera utilisé pour afficher la grille
    		GridBagLayout gestionnaire = new GridBagLayout();
    		GridBagConstraints gbc = new GridBagConstraints();
    		this.setLayout(gestionnaire);
     
    		// on "configure" la façon dont le gridbaglayout va positionner les comps
    		gbc.gridx = 0;
            gbc.gridy = 0;
            gbc.gridwidth = 1;
            gbc.gridheight = 1;
     
            for (int i = 1; i<=taille; i++) {
     
            	if (i%taille == 0) {
            		gbc.gridheight = GridBagConstraints.REMAINDER;
            	}
     
            	for ( int e = 1; e<=taille; e++) {
            		tabcase[tabfiller] = new Case();
            		tabfiller++;
            		if (e%taille == 0) {
            			gbc.gridwidth = GridBagConstraints.REMAINDER;
            			this.add(tabcase[tabfiller-1]);
            			gbc.gridwidth = 1;
            		} else {
            			this.add(tabcase[tabfiller-1]);
            		}
            		gbc.gridx++;
            	}
                    gbc.gridx = 0;
            	gbc.gridy++;
            }
    	}
     
    }
    Puis une case :
    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
    import javax.swing.JComponent;
    import java.awt.*;
     
    public class Case extends JComponent {
      private int typecase;
      public Case() {
        super();
        this.setPreferredSize(new Dimension(50,50));
      }
     
      public void setTypeCase(int tc) {
          if (this.typecase != tc) {
              this.typecase = tc;
              repaint();
          }
      }
      @Override
      public void paintComponent(Graphics pinceau) {
        Graphics secondPinceau = pinceau.create();
     
        secondPinceau.drawRect(0,0,this.getWidth(),this.getHeight());
     
        if (this.typecase == 0) { // je remplirai cette partie plus tard
     
        } else if (this.typecase == 1) {
     
        } else if (this.typecase == 2) {
     
        } else if (this.typecase == 3) {
     
        }
      }
    }
    Je demande votre aide car je ne comprend pas pourquoi les composants ne se placent pas comme je le souhaite (en somme ils ne forment pas une grille, j'obtiens un simple trait au milieu du JPanel contenant la grille), je n'arrive pas à trouver l'erreur bien que je sois certain qu'elle vous sera évidente ^^
    En tout cas après diverses recherches je ne trouve pas donc si quelqu'un est en mesure de m'aider et m'expliquer comment faire je le remercie d'avance !

    Zarrok.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    J'ai finalement trouvé la solution, j'ai tout simplement manqué une instruction ^^ (remettre à 0 gridx...), cependant est-ce possible de "prédéfinir" la taille des cellules d'un GridBagLayout ?

    Zarrok

Discussions similaires

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

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