E aí pessoal minha dúvida é a seguinte:
Estou elaborando uma aplicação em que preciso de construir algumas funcionalidades: inserir, excluir, imprimir…
Para cada uma destas funcionalidades fiz uma classe que extende a classe JPanel(classes personalizadas de JPanel) e quando clico em um JRadioButton e um ItemEvent é disparado tento adicionar a um (será que devia construir um painel principal no JFrame e adicionar os demais nele?) JFrame aquele painel que corresponde á funcionalidade descrita pelo JRadioButton.Porém quando faço esta adição, o painel não é mostrado.
Acho que é uma questão de perda de referência do container da janela pois quando passo este container como parâmetro em algum método para alguma das classes que extendem JPanel as alterações utilizando este container são refletidas como desejado.(A operação usando o container passado como referência a um painel é mostrada no JFrame)
O que devo fazer?
Obs: Não quero utilizar JTabbedPane!
À seguir parte do código com o tratamento do evento de clique no JRadioButton e que também mostra a adição de cada painel ao JFrame:
private class RadioButtonHandler implements ItemListener
{
public void itemStateChanged(ItemEvent event)
{
if(event.getSource() == jrBtPrincipal)
{
pnlTexto = new PanelTexto();
getContentPane().add(pnlTexto,BorderLayout.CENTER);
}
else if(event.getSource() == jrBtCadastrar)
{
pnlCadastro = new PanelCadastro();
getContentPane().add(pnlCadastro,BorderLayout.CENTER);
}
else if(event.getSource() == jrBtExcluir)
{
pnlExcluir = new PanelExcluir();
getContentPane().add(pnlExcluir,BorderLayout.CENTER);
}
else if(event.getSource() == jrBtMostrarEnd)
{
pnlEnd = new PanelMostrarEnd();
getContentPane().add(pnlEnd,BorderLayout.CENTER);
}
else if(event.getSource() == jrBtMostrarArvore)
{
pnlArv = new PanelArvore();
getContentPane().add(pnlArv,BorderLayout.CENTER);
}
else if(event.getSource() == jrBtMostrarTabela)
{
pnlTab = new PanelTabela();
getContentPane().add(pnlTab,BorderLayout.CENTER);
}
else if(event.getSource() == jrBtSair)
{
System.exit(0);
}
}
}