Como alterar um JPanel de um JFrame sem que os campos fiquem ativos?

Boa noite

Estou desenvolvendo um programa que cadastra funcionários e clientes. E queria trocar o JPanel do meu JFrame, mas não quero que os elementos do JPanel anterior existam, ou seja, não quero setar como “visível false”, quero que ele deixe de existir.

O evento deve acontecer quando eu clico em um botão do menu, com isso ele deverá alterar o JPanel do meu JFrame.


package Te;


import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JMenuBar;
import javax.swing.JFrame;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JButton;

public class Teste implements ActionListener{


	private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="197,17"
	private JPanel jPanel = null;
	private JMenuBar jJMenuBar = null;
	private JMenu jMenu = null;
	private JMenuItem jMenuItem = null;
	private JPanel jPanelPrincipal = null;
	private JButton jButton = null;
	private JPanel jPanelOutraTela = null;
	private JButton jButtonTexto = null;

	/**
	 * This method initializes jPanel
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanel() {
		if (jPanel == null) {
			jPanel = new JPanel();
			jPanel.setLayout(new GridBagLayout());
		}
		return jPanel;
	}

	/**
	 * This method initializes jJMenuBar
	 *
	 * @return javax.swing.JMenuBar
	 */
	private JMenuBar getJJMenuBar() {
		if (jJMenuBar == null) {
			jJMenuBar = new JMenuBar();
			jJMenuBar.add(getJMenu());
		}
		return jJMenuBar;
	}

	/**
	 * This method initializes jMenu
	 *
	 * @return javax.swing.JMenu
	 */
	private JMenu getJMenu() {
		if (jMenu == null) {
			jMenu = new JMenu();
			jMenu.setText("Cadastro");
			jMenu.add(getJMenuItem());
			jMenu.add(getJPanel());

		}
		return jMenu;
	}

	/**
	 * This method initializes jMenuItem
	 *
	 * @return javax.swing.JMenuItem
	 */

	private JMenuItem getJMenuItem() {
		if (jMenuItem == null) {
			jMenuItem = new JMenuItem();
			jMenuItem.setText("Altera JPanel");
			jMenuItem.addActionListener(new ActionListener(){
				//Evento que vai mudar a tela
				public void actionPerformed(ActionEvent e) {



				}

			});

		}
		return jMenuItem;
	}

	/**
	 * This method initializes jPanel1
	 *
	 * @return javax.swing.JPanel
	 */
	private JPanel getJPanelPrincipal() {
		if (jPanelPrincipal == null) {
			jPanelPrincipal = new JPanel();
			jPanelPrincipal.setLayout(new GridBagLayout());
			jPanelPrincipal.add(getJButton(), null);
		}
		return jPanelPrincipal;
	}

	/**
	 * This method initializes jButton
	 *
	 * @return javax.swing.JButton
	 */
	private JButton getJButton() {
		if (jButton == null) {
			jButton = new JButton();
			jButton.setText("Nome");
		}
		return jButton;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				Teste application = new Teste();
				application.getJFrame().setVisible(true);
			}
		});
	}

	/**
	 * This method initializes jFrame
	 *
	 * @return javax.swing.JFrame
	 */
	private JFrame getJFrame() {
		if (jFrame == null) {
			jFrame = new JFrame();
			jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			jFrame.setSize(300, 200);
			jFrame.setJMenuBar(getJJMenuBar());
			jFrame.setContentPane(getJPanelPrincipal());
			jFrame.setTitle("Application");
		}
		return jFrame;
	}


	public void actionPerformed(ActionEvent e) {


	}

	//O panel que deve aparecer
	private JPanel getPanelOutraTela(){
		if (jPanelOutraTela == null) {
			jPanelOutraTela = new JPanel();
			jPanelOutraTela.setLayout(new GridBagLayout());
			jPanelOutraTela.add(getJButtonTexto(), null);
		}
		return jPanelOutraTela;
	}

	private JButton getJButtonTexto(){
		if (jButtonTexto == null) {
			jButtonTexto = new JButton();
			jButtonTexto.setText("Texto");
		}
		return jButtonTexto;
	}

}

Nenhuma sugestão?