GridBagLayout

Sou nova na interface gráfica e tenho que fazer um tabuleiro… mas quando add os botões com o GridBagLayout eles não ficam exatamente na posição que eu quero (que seria no estilo de uma matriz, pois tenho que faezr um jogo de resta-um)

[code]package Limite;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Container;
import java.awt.Insets;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.*;

public class Tabuleiro extends JFrame implements ActionListener {

private JButton[][] pinos;
private GridBagConstraints constraints; // constraints of this layout
private GridBagLayout layout;
//Container c = this.getContentPane();  

public Tabuleiro(){
	 
	super( "Resta um" );
    setLayout( new FlowLayout() );
    
    Icon pino = new ImageIcon( getClass().getResource( "pino.jpg" ) );
    Icon sempino = new ImageIcon( getClass().getResource( "sempino.jpg" ) );
    pinos = new JButton[9][9];
    
    layout = new GridBagLayout();
    setLayout(layout);
    constraints = new GridBagConstraints();
    //constraints.fill = GridBagConstraints.BOTH;
   //constraints.insets = new Insets(0, 0, 9, 9);
   

            
    for(int i=0; i<9;i++ )
    	for(int j=0; j<9;j++){
    		pinos[i][j]=new JButton(pino);
    		addComponent(pinos[i][j], i, j, 1, 1);
    		

    	    //add(pinos[i][j]); 
    	}
    

	for(int k = 0; k<9; k++)
		for(int l = 0; l<9; l++)
			if((k<3 && l<3) || (k<3 && l>5) || (k>5 && l<3) || (k>5 && l>5)){
        	    pinos[k][l].setVisible(false);
        	    addComponent(pinos[k][l], k, l, 1, 1);
        	    //add(pinos[k][l]); 
			}
	pinos[4][4].setIcon(sempino);
	
	for(int o=0; o<9; o++)
    	for(int p=0; p<9; p++){
    		addComponent(pinos[o][p], o, p, 1, 1);
    	}
    	
}




public void actionPerformed( ActionEvent event )
{ 
  
}

private void addComponent( Component component,int row, int column, int width, int height )

{
constraints.gridx = column;
constraints.gridy = row;
constraints.gridwidth = width;
constraints.gridheight = height;
layout.setConstraints( component, constraints );
add( component );
}

  private class GerenciadorGeral implements ActionListener {
    public void actionPerformed(ActionEvent evento) {
      /*if (evento.getSource() == btnCancelar) 
        System.exit(0);*/
    }
  }

}
[/code]

Alguém pode me ajudar?
Valeu

Do começo:
setLayout( new FlowLayout() );
Não existe um porque se configurar o layout como um FlowLayout no começo só para logo a seguir re-configurar-lo como gridBag

Segundo:

[code]super(“Resta um”);

	Icon pino = new ImageIcon(getClass().getResource("pino.jpg"));
	Icon sempino = new ImageIcon(getClass().getResource("sempino.jpg"));
	pinos = new JButton[9][9];

	layout = new GridBagLayout();
	setLayout(layout);
	constraints = new GridBagConstraints();
	// constraints.fill = GridBagConstraints.BOTH;

	// Trecho que cria os pinos e os adicionam na janela pela primeira vez
	for (int i = 0; i < 9; i++) {
		for (int j = 0; j < 9; j++) {
			pinos[i][j] = new JButton(pino);
			addComponent(pinos[i][j], i, j, 1, 1);

			// add(pinos[i][j]);
		} // for
	} // for[/code]

Com apenas isso do seu código os pinos já estão sendo adicionados (imagino que corretamente já que estão no formato de uma matriz)
Não quer dar uma re-trabalhada no problema e/ou código para ser mais claro onde está o problema ?