Problemas na organização de campos de painel de interface java

Boa tarde pessoa!

Estou trabalhando com interface no java estou tendo um pequeno problema para organizar os comandos de forma adequada no painel!

O painel deveria ficar assim:

O código usado é esse:

package interfaceGrafica;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class PainelCadastrar extends JPanel{
	
	//Rótulos;
	private JLabel nome;
	private JLabel coeficiente;
	private JLabel sexo;
	private JLabel numeroCadastros;
	
	//Campos;
	private JTextField campoNome;
	private JTextField campoCoeficiente;
	private JTextField campoSexo;
	private JTextField campoNumeroCadastros;
	
	//Botões
	private JButton botaoCadastrar;
	private JButton botaoLimpar;
	
	private JPanel painelCampos;
	private JPanel painelBotoes;
	private JPanel painelAuxiliar;
	
	public PainelCadastrar(){
		
		//Criação de rótulos;
		nome = new JLabel("Nome: ");
		coeficiente = new JLabel("Coeficiente: ");
		sexo = new JLabel("Sexo: ");
		numeroCadastros = new JLabel("Nº de alunos Cadastrados: ");
		
		//Criação de campos;
		campoNome = new JTextField(20);
		campoCoeficiente = new JTextField(5);
		campoSexo = new JTextField(2);
		campoNumeroCadastros = new JTextField(5);
		
		//Criação de botões;
		botaoCadastrar = new JButton("Cadastrar");
		botaoLimpar = new JButton("Limpar");
		
		//Criação de painéis;
		painelCampos = new JPanel(new GridLayout(4, 3, 5, 5));
		painelBotoes = new JPanel();
		painelAuxiliar = new JPanel();
		
		painelCampos.add(nome);
		painelCampos.add(campoNome);
		
		painelCampos.add(coeficiente);
		painelCampos.add(campoCoeficiente);
		
		painelCampos.add(sexo);
		painelCampos.add(campoSexo);

		painelCampos.add(numeroCadastros);
		painelCampos.add(campoNumeroCadastros);
		
		painelBotoes.add(botaoCadastrar);
		painelBotoes.add(botaoLimpar);
		
		painelAuxiliar.add(painelCampos);
		
		this.setLayout(new BorderLayout(5, 5));
		this.add(painelAuxiliar, BorderLayout.CENTER);
		this.add(painelBotoes, BorderLayout.SOUTH);

		//Tratamento de eventos;
		botaoLimpar.addActionListener(
				new ActionListener(){
					
					public void actionPerformed(ActionEvent e){
						campoNome.setText("");
						campoCoeficiente.setText("");
						campoSexo.setText("");
					}
				}
		);
			
	}
}

Se vocês conseguirem achar onde está o problema e me darem um dica, agradeço!

Obrigado!