JPanel com GridLayout

olá gostaria de uma ajudinha…

quando crio um JPanel com o layout de GridLayout, defino o numeros de linhas e colunas: exemplo de 3x3

se quero adicionar um botao ou caixa de texto neste JPanel porem no centro seria na linha 2 coluna 2, contando da esquerda para direita e de cima pra baixo é a 5ª posicao.

estou tentando fazer este exemplo mas nao consigo, da erro e a excecao de ILlegalArgumentException dizendo que a posicao do indice está incorreta, tentei varios numeros de indice diferente mas nao funciona, e no metodo: JPanel.add(Component comp, int index). no caso do index da esse erro.

alguem saberia como centralizar o componente ou definir em qual posicao do Grid vai ficar?

Eu aconselho você adicionar nessa posição um outro painel e os componentes dentro deste novo painel.

falow

o meu problema é como adicionar em tal posicao apenas colocando o numero nao vai, vou mostrar como estou tentando fazer:

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.*;

public class Painel{

JFrame janela = new JFrame();	

JPanel painelPrinc = new JPanel();
JPanel painelSpr = new JPanel();
	
JTextField txt = new JTextField(5);

            public Painel(){
	
	janela.setTitle("Painel");
	janela.setSize(300,300);
	janela.setLocation(500,250);
	janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	
	painelPrinc.setLayout(new BorderLayout());
	
	painelPrinc.add("North", painelSpr);
	painelPrinc.add("West", (outroPainel));
	painelPrinc.add("Center", (outroPainel));
	painelPrinc.add("East", (outroPainel));
	painelPrinc.add("South", (outroPainel));

	painelSpr.setLayout(new GridLayout(3, 3, 5, 5));	
	
	painelSpr.add(txt, 5);	

                            janela.setVisible(true);    

}

public static void main(String[] args) {
	new Painel();
}

}[/code]

aí neste caso o painel superior que chamei de painelSpr ele tem 9 posicoes, pq esta como 3x3 no Grid, mas quando executo da erro e aparece a excecao de que o indice da posicao esta incorreto e se alterar a linha

para

ele ira funcionar normalmente porem o txt aparece no topo da janela queria centralizar o txt no North do Border.

dividi o North do Border num Grid de 3x3 e queria centralizar o Component neste Grid…

como faco isso?

alguem poderia ajudar?

Você vai adicionando na sequência, ou seja, da esquerda para direita e de cima para baixo, vai adicionando os componentes e quando for na posição 2x2, ou seja o 5º componente, vc adiciona o painel.

GridLayout não tem suporte a constraints. Este índice que está passando junto com o componente “txt” está dizendo para o container que este deve ser o quinto componente, como há menos de 5 componentes no container, a exceção é lançada.

Aconselho que use o MigLayout para fazer isto.

disse eu ate faria mas teria que instanciar varias labels em branco pra ir adicionando?

pq no north quero deixar apenas o txt e no meio, criei 4 labels pra fazer este teste e todas com rotulo " "; em branco

aí adicionei 4 labels, depois o txt pra poder deixar no centro… mas ai fico criando label a toa… nao tem como centralizar direto?