Problema com setContentPane

Buenas pessoal. Estou com um problema aqui e acho que vocês vão conseguir me ajudar.

Eu tenho uma classe TelaPrincipal que estende JFrame. Essa tela vai ter um JMenu e um painel. A intenção inicial era, conforme eu seleciona uma opção no menu, esse JPanel mudava. Por exemplo, eu seleciono no Menu Cadastros a opção Fornecedor, então vai aparecer eu troco o painel padrão pelo painel que contem as opções de cadastro de fornecedores. Eu criei o evento pra quando clicar na opção ele trocar o painel, só tem um problema: não está trocando. O evento está funcionando, porque pra testar eu configurei para aparecer uma message box na hora que clicasse na opção, e a message box está aparecendo. O problema é mesmo na troca do painel.

O código é o seguinte:

[code]import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JMenuItem;

public class TelaInicial extends JFrame {

private JPanel contentPane;
/**
 * Create the frame.
 */
public TelaInicial() {
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	setBounds(100, 100, 457, 310);
	
	JMenuBar menuBar = new JMenuBar();
	setJMenuBar(menuBar);
	
	JMenu Cadastros = new JMenu("Cadastros");
	menuBar.add(Cadastros);
	
	JMenuItem mntmFornecedores = new JMenuItem("Fornecedores");
	mntmFornecedores.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent arg0) {
		JOptionPane.showMessageDialog(null, "Evento disparado com sucesso");
                    Fornecedor f = new Fornecedor();
		setPanel(f);
		}
	});
	Cadastros.add(mntmFornecedores);
	
	JMenu mnConsultas = new JMenu("Consultas");
	menuBar.add(mnConsultas);
	
	JMenu mnMovimentacao = new JMenu("Movimenta\u00E7\u00E3o");
	menuBar.add(mnMovimentacao);
	
	JMenu mnLogout = new JMenu("Logout");
	menuBar.add(mnLogout);
	
	
	/*contentPane = new JPanel();
	contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
	contentPane.setLayout(new BorderLayout(0, 0));
    setContentPane(contentPane);*/
	
}

public void setPanel(Fornecedor f){
	f = new Fornecedor();
	this.setContentPane(f);
}

}
[/code]

Eu estava tentando passar o setContentPane(f); dentro do actionListener, mas não funcionou. Criei esse método setPanel, que vai setar o ContentPane. Se eu executar esse método no construtor da classe, funciona perfeitamente. Se eu usar dentro do método actionListener, não funciona.

O que eu preciso fazer nesse código pra conseguir que o setContentPane funcione no actionListener?

Muito obrigado!