GridBagLayout

Boa noite,

Eu tenho vários JPanel que estão dentro de cards. Estou usando em cada JPanel FlowLayout, mas como é um formulario eu gostaria de colocar um campo em cada linha da seguinte maneira:
Nome: campo
Endereço: campo
Com FlowLayout eu não vou conseguir fazer isso, então eu tava pensando em usar o GridBagLayout mas não estou conseguindo colocar nos JPanel, abaixo tem um exemplo de um JPanel:

        JPanel cAutor = new JPanel();
        cAutor.setSize(10, 30);
        cAutor.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 30));
        cAutor.add(new JLabel("CPF: "));
        cAutor.add(cpfAutor = new JTextField(5));
        cAutor.add(new JLabel("Nome: "));
        cAutor.add(nomeAutor = new JTextField(5));
        cAutor.add(new JLabel("Endereço: "));
        cAutor.add(endAutor = new JTextField(5));
        cAutor.add(new JLabel("Telefones: "));
        cAutor.add(telAutor = new JTextField(5));
        cAutor.add(bAutor = new JButton("Cadastrar", add));
        bAutor.addActionListener(this);

Eu coloco esse Jpanel no card da seguinte maneira:

cards = new JPanel();
cards.setLayout(new CardLayout());
cards.add("CadastraAutor", cAutor);

Depois dou um:

getContentPane().add(cards);

Enfim, como eu troco o FlowLayout por GridBagLayout?

Obrigado.

Como são dois campos e dois labels em cada linha, o GridBadLayout é mais recomendável, pois te permite cotrolar onde colocar cada componente controlando o GridBagConstraints.

Um exemplo em que usei um GridBagLayout:

GridBagLayout grid = new GridBagLayout();
			GridBagConstraints gc = new GridBagConstraints();
			panelTres.setLayout(grid);

			gc.anchor = GridBagConstraints.WEST;
			gc.fill = GridBagConstraints.NONE;

			gc.gridy = 0;
			gc.gridx = 0;
			panelTres.add(getLabelSelecaoPor(), gc);

			gc.gridx++;
			panelTres.add(getRadioNomeContribuinte(), gc);

			gc.gridx++;
			gc.gridwidth = GridBagConstraints.REMAINDER;
			panelTres.add(getRadioIdentificacao(), gc);

			gc.gridy++;
			gc.gridx -= 2;
			campoInicio = getCampo(campoInicio, "Inicio", "campoInicio",
					CAMPO_TAMANHO_MAX, BBJTextLabel.SO_NUMERO_E_CARACTER);
			panelTres.add(campoInicio, gc);
			campoInicio.setEnabled(false);

			gc.gridy++;
			campoFim = getCampo(campoFim, "Fim", "campoFim",
					CAMPO_TAMANHO_MAX, BBJTextLabel.SO_NUMERO_E_CARACTER);
			panelTres.add(campoFim, gc);
			campoFim.setEnabled(false);

			gc.gridy++;
			campoIdentificacao = getCampo(campoIdentificacao, "Identificação",
					"campoIdentificacao", 250, BBJTextLabel.SO_NUMERO_E_CARACTER);
			panelTres.add(campoIdentificacao, gc);
			campoIdentificacao.setEnabled(false);

Obrigadão, deu certo aqui… Eu só estou com um problema agora, que os campos ficam no meio da janela, eu queria que os campos ficassem no canto superior da janela. Já tentei mudar o anchor e o fill mas não consigo.