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!