Problema com setContentPane

0 respostas
vdlow

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:

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);
	}
	
}

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!

Criado 12 de maio de 2012
Respostas 0
Participantes 1