Dúvidas com o Layout Manager Mig Layout

E ai moçada, beleza? Em quase todos os fóruns que visito as pessoas recomendam o MigLayout para criação de GUI… Eu comecei a estudar o Mig Layout e surgiu uma dúvida em relação a alinhamentos dos componentes, mais precisamente o tamanho dos Text Field. Alguém pode dar uma dica de como deixa-los alinhados?

Abaixo segue o código que utilizei para a criação da GUI e ScreenShot dela. Pra entender o que eu estou querendo dizer, basta olhar para o textfield referente a Fax e o referente a Email… Ambos estão desalinhados.

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.text.MaskFormatter;
import net.miginfocom.swing.MigLayout;

public class GuiAgenda extends JFrame
{
	JLabel lcodigo = new JLabel ("Codigo");
	JTextField tfCodigo = new JTextField (3);
	JLabel lnome = new JLabel ("Nome");	
	JTextField tfnome = new JTextField (25);
	MigLayout MigLayout = new MigLayout ();
	JPanel panel = new JPanel ();
	JButton b_teste = new JButton ("Teste");
	String nomes [] = {"CE", "PA", "RJ"};
	JLabel lendereco = new JLabel ("Endereço");
	JTextField tfendereco = new JTextField (30);
	JLabel lnumero = new JLabel ("Nº");
	JTextField tfnumero = new JTextField (3);
	JLabel lcidade = new JLabel ("Cidade");
	String sexos [] = {"Masculino", "Feminino"};
	JLabel lsexo = new JLabel ("Sexo");
	JComboBox sexobox = new JComboBox (sexos);
	JTextField tfcidade = new JTextField (15);
	JLabel lestado = new JLabel ("Estado");
	JComboBox combobox = new JComboBox (nomes);
	JLabel lTelefone = new JLabel ("Telefone");
	JFormattedTextField tfTelefone = new JFormattedTextField (Mascara("(##)####-####"));
	JLabel lFax = new JLabel ("FAX");
	JFormattedTextField tfFax = new JFormattedTextField (Mascara("(##)####-####"));
	JLabel lemail = new JLabel ("E-mail");
	JTextField tfEmail = new JTextField (19);	
	JButton bNovo = new JButton ("Novo");
	JButton bSalvar = new JButton ("Salvar");
	JButton bLocalizar = new JButton ("Localizar");
	JButton bDeletar = new JButton ("Deletar");
	JButton bSair = new JButton ("Sair");
	JPanel panel2 = new JPanel ();
	
	public GuiAgenda ()
	{	
		super ("Agenda");
		super.setDefaultCloseOperation(EXIT_ON_CLOSE);
		super.setVisible(true);
		super.setLocationRelativeTo(null);
		super.setLayout(new BorderLayout());
		super.setResizable (false);
		super.setSize (475,220);
		
		panel.setLayout(MigLayout);
		panel2.setLayout(new FlowLayout());
		
		tfTelefone.setPreferredSize(new Dimension(90,25));
		tfFax.setPreferredSize(new Dimension(90,25));
		
		panel.add(lcodigo);
		panel.add(tfCodigo,"wrap");
		panel.add(lnome);
		panel.add(tfnome,"wrap");
		panel.add(lendereco);
		panel.add(tfendereco,"split");
		panel.add(lnumero);
		panel.add(tfnumero, "wrap, span, split");
		panel.add(lsexo);
		panel.add(sexobox,"split");
		panel.add(lcidade);
		panel.add(tfcidade,"split");
		panel.add(lestado);
		panel.add(combobox,"wrap, span");
		panel.add(lTelefone);
		panel.add(tfTelefone, "split");
		panel.add(lFax);
		panel.add(tfFax,"wrap");
		panel.add(lemail);
		panel.add(tfEmail);
		
		panel2.add(bNovo);
		panel2.add(bSalvar);
		panel2.add(bDeletar);
		panel2.add(bLocalizar);
		panel2.add(bSair);
		
		super.add(panel,BorderLayout.CENTER);
		super.add(panel2,BorderLayout.SOUTH);
		
		bSair.addActionListener(new BotaoAcao
				());		
	}
	
	public MaskFormatter Mascara(String Mascara){  
        
	       MaskFormatter F_Mascara = new MaskFormatter();  
	       try{  
	           F_Mascara.setMask(Mascara); //Atribui a mascara  
	           F_Mascara.setPlaceholder(" "); //Caracter para preencimento
	           
	       }  
	       catch (Exception excecao) {  
	       excecao.printStackTrace();  
	       }   
	       return F_Mascara;  
	}
	
	private class BotaoAcao implements ActionListener
	{
		public void actionPerformed (ActionEvent event)
		{
			if (event.getSource() == bSair)
			{
				System.exit(0);
			}
		}
	}
	
}

P.s.: Vale ressaltar que ainda sou novato em programação Java, e agradeceria bastante alguém me dar uma luz. Valeu! =D

Oi, amigo.
Vê se esse código resolve seu problema.
Você pode fazer uso da propriedade growx para que o componente cresça até o limite do layout.
A partir dai, você usa split pra controlar o número de campos por linha, e os outros parâmetros que você tá acostumado!

[code] public GuiAgenda() {

    try {
        UIManager.setLookAndFeel(
        UIManager.getSystemLookAndFeelClassName());
    }
    catch (Exception anyError) {
        anyError.printStackTrace();
    }
    
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setLayout(new BorderLayout());
    setLocationRelativeTo(null);
    setResizable(false);
    setTitle("Agenda");
    setSize(500, 290);
    setVisible(true);

    panel.setLayout(new MigLayout());
    panel.setBorder(BorderFactory.createTitledBorder(
    BorderFactory.createLineBorder(Color.gray), "Dados do contato"));
    panel2.setLayout(new MigLayout("", "push[][][][][]push"));

    
    tfTelefone.setPreferredSize(new Dimension(90, 25));
    tfFax.setPreferredSize(new Dimension(90, 25));

    panel.add(lcodigo, "align right");
    panel.add(tfCodigo, "growx, wrap");
    panel.add(lnome, "align right");
    panel.add(tfnome, "growx, wrap");
    panel.add(lendereco, "align right");
    panel.add(tfendereco, "gap right 2, split");
    panel.add(lnumero, "align right");
    panel.add(tfnumero, "growx, wrap");
    panel.add(lsexo, "align right");
    panel.add(sexobox, "growx, split");
    panel.add(lcidade, "align right");
    panel.add(tfcidade, "growx, split");
    panel.add(lestado, "align right");
    panel.add(combobox, "growx, wrap");

    panel.add(lemail, "align right");
    panel.add(tfEmail, "growx, wrap");

    panel.add(lTelefone, "align right");
    panel.add(tfTelefone, "wrap");
    panel.add(lFax, "align right");
    panel.add(tfFax, "");

    panel2.add(bNovo);
    panel2.add(bSalvar);
    panel2.add(bDeletar);
    panel2.add(bLocalizar);
    panel2.add(bSair);

    add(panel, BorderLayout.NORTH);
    add(panel2, BorderLayout.CENTER);[/code]

Espero ter ajudado!
Fica com Deus, abração!

Nussa… Valeu a força… Pensei que ninguem ia ajudar. ehehe
Mas em relação a GUI, o campo código e email ficou do tamanho do Frame, acho que é muito grande. eheh Mas de toda forma, com a sua ajuda deu uma clareada e agora ficará mais fácil… Valeu Nicolas.

[quote=Erehbr]Nussa… Valeu a força… Pensei que ninguem ia ajudar. ehehe
Mas em relação a GUI, o campo código e email ficou do tamanho do Frame, acho que é muito grande. eheh Mas de toda forma, com a sua ajuda deu uma clareada e agora ficará mais fácil… Valeu Nicolas.[/quote]

Que isso, Erehbr. Estamos aí pra isso. ^^
Sim, ele ficou do tamanho do frame. A propriedade growx vai estender o componente até o tamanho máximo permitido a ele.
Agora, você pode colocar esse formulário dentro de um JPanel e setar o tamanho desse JPanel. Daí os seus componentes mudarão de acordo com o JPanel. Que acha da ideia?

Fica com Deus, bons estudos. Abraço!

Hmm… Beleza!! ^^

Assim que eu tiver um tempinho livre aqui no escritório eu faço como você ensinou… É dureza, estudar e trabalhar é tenso, tenho que aproveitar cada segundo livre. hehehe

Nicolas, eu ando fazendo os formulários “na unha”, acho muito sujo o código feito com os editores… O que você sugere amigão? Desisto de fazer na unha e passo a usar um editor?
E novamente muito obrigado pelas dicas.