Duvida GridLayout

uma vez perguntei sobre posicionamento de componentes me passaram varias formas porem me sugeriram a aprender sobre “layoutmanagers” no momento usei o setLayout(null) e o setBounds por ser mais fácil e rápido pois tinha prazo para o trabalho, mas quero aprender a fazer do modo correto começando pelo “GridLayout”, mas não consigo colocar os componentes corretamente eles não passam para a próxima linha e parecem esticados no tamanho da tela
pelo q eu tinha entendido o “wrap” seria para passar para a próxima o que não esta acontecendo, onde eu estou errando?

[code]import java.awt.Container;
import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Principal extends JFrame {

 JTextField text1,text2,text3;
 JLabel label1,label2,label3;



public Principal(){
	super("Nossa primeira janela");
	Container tela = getContentPane();
	setLayout( new GridLayout());
	
	text1 = new JTextField(20);
	text2 = new JTextField(20);
	text3 = new JTextField(20);
	
	label1 = new JLabel ("nome");
	label2 = new JLabel ("endereço");
	label3 = new JLabel ("telefone");
	

	
	tela.add(text1);
	tela.add(text2);
	tela.add(text3, "wrap");  //pular para proxima linha
	tela.add(label1, "wrap"); // pular para proxima linha
	tela.add(label2);
	tela.add(label3);
	
	


}
public static void main(String[] args) {
	Principal app = new Principal();
	app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
	app.setVisible (true);
	app.setSize(800,600);
}

}
[/code]

O GridLayout redimensiona os componentes para ocupar todo o container, isso é normal.

Chamando o construtor padrão, é criado um grid que vai colocando os componentes em uma única linha. Se quiser especificar o número de linhas e colunas, passe os valores pelo construtor.

A constraint “wrap” realmente serve para quebrar a linha, porém este é um recurso do MigLayout e não do GridLayout.