Problema com JTabbedPane usando o GridBagLayout

Estou tendo problema com com JTabbedPane e seus paines ao usar o GridBagLayout. No primeiro painel eu consigo alinhar eles certo, mas no segundo eles fica centralizados no meio…Alguem poderia me ajduar ?




public class TelaCliente extends TelaPadrao implements ItemListener
{
    GridBagLayout gbt = new GridBagLayout();
    private JCheckBox check1 = new JCheckBox("Física", false);
    private JCheckBox check2 = new JCheckBox("Jurídica", false);
    private ButtonGroup btGrupo = new ButtonGroup();
    private MeuCampoInteiro campoCodigo = new MeuCampoInteiro(4, true, false, "Código");
    private MeuCampoTexto campoNome = new MeuCampoTexto(30, true, "Nome");
    private MeuCampoTexto campoEndereco = new MeuCampoTexto(35, true, "Endereco");
    private MeuCampoTexto campoNumero = new  MeuCampoTexto(6, false, "Número");
    private MeuCampoTexto campoComplemento = new  MeuCampoTexto(18, false, "Complemento");
    private MeuCampoTexto campoBairro = new MeuCampoTexto(18, false, "Bairro");
    private MeuCampoCep campoCep = new MeuCampoCep(false, "CEP");
   
    private MeuCampoCpf campoCpf = new MeuCampoCpf(true, "CPF");
    private MeuCampoCpf campoCnpj = new MeuCampoCpf(true, "CNPJ");
    private MeuCampoRg campoRg = new MeuCampoRg(false, "RG");
    private MeuCampoTelefone campoTelefone = new MeuCampoTelefone(false, "Telefone");
    private MeuCampoTelefone campoCelular = new MeuCampoTelefone(false, "Celular");
    private MeuCampoTexto campoEmail = new MeuCampoTexto(50, false, "Email");
    public MeuComboBox campoCidade = new MeuComboBox();
    
    private JPanel panel = new JPanel(gbt);
    private JPanel panel2 = new JPanel(gbt);
    private JPanel panelGrupo = new JPanel(gbt);
    private MeuJLabel tipo = new MeuJLabel("CPF/CNPj");
    private MeuCampoCJ campoCJ = new MeuCampoCJ(false, true, "CPF/CNPj");;
    
    
    public TelaCliente(){
        super("Cliente");
        gbc.fill = GridBagConstraints.BOTH;
        tbp.add("Dados", panel);
        tbp.add("Contatos", panel2);
        addComponente(0, 0, 100, 100, 1, 1, oeste, panelCentral, tbp);
        btGrupo.add(check1);
        btGrupo.add(check2);
        panelGrupo.add(check1);
        panelGrupo.add(check2);
        check1.addItemListener(this);
        check2.addItemListener(this);
        panelGrupo.setBorder(BorderFactory.createTitledBorder("Tipo Pessoa"));
        montaComponente();
        habilitarCampos(false);
        pack();
    }

    private void montaComponente() {
        gbc.fill = GridBagConstraints.NONE;
        addComponente(1, 3, 100, 100, 1, 2, oeste, panel, panelGrupo);
        addComponente(1, 1, 100, 100, 1, 1, oeste, panel, new MeuJLabel("Código"));
        addComponente(2, 1, 100, 100, 1, 1, oeste, panel, campoCodigo);
        addComponente(3, 1, 100, 100, 1, 1, oeste, panel, new MeuJLabel("Nome"));
        addComponente(4, 1, 100, 100, 2, 1, oeste, panel, campoNome);
        addComponente(5, 1, 100, 100, 1, 1, oeste, panel, new MeuJLabel("Endereço"));
        addComponente(6, 1, 100, 100, 2, 1, oeste, panel, campoEndereco);
        addComponente(5, 3, 100, 100, 1, 1, oeste, panel, new MeuJLabel("Número"));
        addComponente(6, 3, 100, 100, 1, 1, oeste, panel, campoNumero);
        addComponente(7, 1, 100, 100, 2, 1, oeste, panel, new MeuJLabel("Complemento"));
        addComponente(8, 1, 100, 100, 1, 1, oeste, panel, campoComplemento);
        addComponente(7, 2, 100, 100, 1, 1, oeste, panel, new MeuJLabel("Bairro"));
        addComponente(8, 2, 100, 100, 1, 1, oeste, panel, campoBairro);
        addComponente(9, 1, 100, 100, 1, 1, oeste, panel, new MeuJLabel("CEP"));
        addComponente(10,1, 100, 100, 1, 1, oeste, panel, campoCep);
        addComponente(11, 1, 100, 100, 1, 1, oeste, panel, tipo);
        addComponente(12, 1, 100, 100, 1, 1, oeste, panel, campoCJ);
        addComponente(11, 2, 100, 100, 1, 1, oeste, panel, new MeuJLabel("RG"));
        addComponente(12, 2, 100, 100, 1, 1, oeste, panel, campoRg);
        addComponente(9, 2, 100, 100, 1, 1, oeste, panel, new MeuJLabel("Cidade"));
        addComponente(10, 2, 100, 100, 1, 1, oeste, panel, campoCidade);
        
        gbc.anchor = GridBagConstraints.NONE;
        addComponente(1, 1, 0, 0, 1, 1, oeste, panel2, new MeuJLabel("Telefone Residencial"));
        addComponente(2, 1, 0, 0, 1, 1, oeste, panel2, campoTelefone);
        addComponente(3, 1, 0, 0, 1, 1, oeste, panel2, new MeuJLabel("Celular"));
        addComponente(4, 1, 0, 0, 1, 1, oeste, panel2, campoCelular);
       
    }

    @Override
    public void itemStateChanged(ItemEvent e) {
        if (e.getItem() == check1){
            tipo.setText(null);
            remove(campoCJ);
            tipo.setText("CPF");
             addComponente(11, 1, 100, 100, 1, 1, oeste, panel, tipo);
             addComponente(12, 1, 100, 100, 1, 1, oeste, panel, campoCpf);
             updateUI();
        }else if (e.getItem() == check2){
            tipo.setText(null);
            remove(campoCJ);
            tipo.setText("CNPJ");
             addComponente(11, 1, 100, 100, 1, 1, oeste, panel, tipo);
             addComponente(12,1, 100, 100, 1, 1, oeste, panel, campoCnpj);
             updateUI();
        }
            
    }
}





    public void addComponente(int linha, int coluna, int largura, int altura, int nColuna, int nLinha, int posicao, Container panel, Component componente)
    { 
       gbc.gridx = coluna;
       gbc.gridy = linha;
       gbc.weightx = largura;
       gbc.weighty = altura;
       gbc.gridwidth = nColuna;
       gbc.gridheight = nLinha;
       gbc.anchor = posicao;
       gbc.insets = new Insets(3,3,3,3);    
        panel.add(componente,gbc);
       if (componente instanceof MeuComponente){
           campos.add((MeuComponente) componente);
       }   
    }