[Resolvido] Problema com GroupLayout

Bom dia Pessoal,

         Estava fazendo um formulario em swing, testando o GroupLayout que parece ser bem interessante, é meio complicado de entender no principio mais depois parece ser bem recompensador, estava seguindo o seguinte tutorial no site da oracle: [url] http://download.oracle.com/javase/tutorial/uiswing/layout/groupExample.html[/url] depois que entendi o principio do layout, tentei fazer um formulario simples, segue abaixo o codigo:
//package com.agenda.ui;

import javax.swing.*;
import static javax.swing.GroupLayout.Alignment.*;

public class AddContactForm {

	JFrame frame;
	
	GroupLayout layout;
	
	JLabel lbNome;
	JLabel lbTelefone;
	JLabel lbEmail;
	
	JTextField tfNome;
	JTextField tfTelefone;
	JTextField tfEmail; 
	
	
	public AddContactForm() {
		frame = new JFrame("Adicionar Contato");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		layout = new GroupLayout(frame.getContentPane());
		layout.setAutoCreateGaps(true);
		layout.setAutoCreateContainerGaps(true);
		
		frame.getContentPane().setLayout(layout);
			
		lbNome = new JLabel("Nome:");
		lbTelefone = new JLabel("Telefone:");
		lbEmail = new JLabel("Email:");
		
		tfNome = new JTextField();
		tfTelefone = new JTextField();
		tfEmail = new JTextField();
		
		layout.setHorizontalGroup(layout.createSequentialGroup()
			.addGroup(layout.createParallelGroup(LEADING)
				.addComponent(lbNome)
				.addComponent(lbTelefone)
				.addComponent(lbEmail))
			.addGroup(layout.createParallelGroup(LEADING)
				.addComponent(tfNome)
				.addComponent(tfTelefone)
				.addComponent(tfEmail))
		);
		
		layout.setVerticalGroup(layout.createSequentialGroup()
			.addGroup(layout.createParallelGroup(BASELINE)
				.addComponent(lbNome)
				.addComponent(tfNome))
			.addGroup(layout.createParallelGroup(BASELINE)
				.addComponent(lbTelefone)
				.addComponent(lbEmail))
			.addGroup(layout.createParallelGroup(BASELINE)
				.addComponent(lbEmail)
				.addComponent(tfEmail))
		);
		
		frame.pack();
		frame.setVisible(true);
	}
	
	public static void main(String[] args) {
		new AddContactForm();
	}
}

tudo parece estar em ordem, pois ja revisei varias vezes e nao encontrei erro algum, o codigo compila sem problemas, mais em runtime… tenho esta exception:

Exception in thread "main" java.lang.IllegalStateException: javax.swing.JTextField[,0,0,0x0,invalid,layout=javax.swing.plaf.basic.BasicTextUI$UpdateHandler,alignmentX=0.0,alignmentY=0.0,border=com.apple.laf.AquaTextFieldBorder@46c837cd,flags=288,maximumSize=,minimumSize=,preferredSize=,caretColor=javax.swing.plaf.ColorUIResource[r=0,g=0,b=0],disabledTextColor=javax.swing.plaf.ColorUIResource[r=128,g=128,b=128],editable=true,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],selectedTextColor=com.apple.laf.AquaImageFactory$SystemColorProxy[r=0,g=0,b=0],selectionColor=com.apple.laf.AquaImageFactory$SystemColorProxy[r=164,g=203,b=255],columns=0,columnWidth=0,command=,horizontalAlignment=LEADING] is not attached to a vertical group
	at javax.swing.GroupLayout.checkComponents(GroupLayout.java:1069)
	at javax.swing.GroupLayout.prepare(GroupLayout.java:1019)
	at javax.swing.GroupLayout.preferredLayoutSize(GroupLayout.java:857)
	at java.awt.Container.preferredSize(Container.java:1599)
	at java.awt.Container.getPreferredSize(Container.java:1584)
	at javax.swing.JComponent.getPreferredSize(JComponent.java:1636)
	at javax.swing.JRootPane$RootLayout.preferredLayoutSize(JRootPane.java:907)
	at java.awt.Container.preferredSize(Container.java:1599)
	at java.awt.Container.getPreferredSize(Container.java:1584)
	at javax.swing.JComponent.getPreferredSize(JComponent.java:1636)
	at java.awt.BorderLayout.preferredLayoutSize(BorderLayout.java:702)
	at java.awt.Container.preferredSize(Container.java:1599)
	at java.awt.Container.getPreferredSize(Container.java:1584)
	at java.awt.Window.pack(Window.java:706)
	at AddContactForm.<init>(AddContactForm.java:62)
	at AddContactForm.main(AddContactForm.java:67)

sera que falta algo? no exemplo da oracle eles apenas extenderam JFrame, mais nao acredito que tenha algo a ver, se alguem ja passou pelo mesmo problema e poderia partilhar uma solucao ou dica, ficarei agradecido.

Problema resolvido, na verdade foi apenas um erro de digitacao… na linha 56 do codigo estou tentando inserir o componente errado, mas agora esta tudo ok!