Trocando de JPanel através de uma JMenuBar

O problema é o seguinte. Tenho uma JMenuBar e cada item serve pra abrir um JPanel diferente. Tenho todo código implementado só falta essa parte. gostaria de saber o que usar dentro do actionPerformed do desejado.

Eis o código:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JMenuBar;

public class Teste extends JFrame {
	private static final long serialVersionUID = 1L;
	
	private JPanel panel1;
	private JPanel panel2;
	private JPanel panel3;
	
	public Teste() {
		
		panel1 = new JPanel();
		panel2 = new JPanel();
		panel3 = new JPanel();
		
		this.addWindowListener(new BasicWindowMonitor());
		this.setJMenuBar(montaBarra());  
        this.setSize(600, 400);
		this.setVisible(true);
	}
	
	public JMenuBar montaBarra() {
		JMenuBar barra = new JMenuBar();
		
		JMenuItem item;
		
		JMenu menu = new JMenu("Menu");
		menu.add(item = new JMenuItem("Mostra Panel1"));
		item.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//o que fazer aqui para aparecer o panel1 no frame
			}
		});
		menu.add(item = new JMenuItem("Mostra Panel2"));
		item.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//o que fazer aqui para aparecer o panel2 no frame
			}
		});
		menu.add(item = new JMenuItem("Mostra Panel3"));
		item.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//o que fazer aqui para aparecer o panel3 no frame
			}
		});
		barra.add(menu);
		
		return barra;
	}
}
jPanel2.setVisible(true);

Mude o nome do jPanel conforme o nome que vc colocou na propriedade. Exemplo: jPanel1.setVisible(true); jPanel2…

Leila