De qualquer forma, para o painel não ser preenchido, você terá que remover o painel quando for fechado e criar um novo (com new) quando ele for aberto novamente.
L
linkbes
Então vini… eu to fazendo assim:
privateJFramejFrame=null;// @jve:decl-index=0:visual-constraint="10,10"privateJMenuBarjJMenuBar=null;privateJMenufileMenu=null;privateJMenuItemEquacoes2MenuItem=null;privateJMenuItempainelPrincipalJMenuItem=null;privateJPanelpainel=null;privateJPaneljpConteudo=null;// @jve:decl-index=0:visual-constraint="443,57"publicJPanelgetPainel(){if(this.painel==null){Painel1pn1=newPainel1();setPainel(pn1.initialize());}returnthis.painel;}publicvoidsetPainel(JPanelpainel){this.painel=painel;}privateJPanelgetJpConteudo(){if(jpConteudo==null){jpConteudo=newJPanel();jpConteudo.setLayout(newBorderLayout());jpConteudo.setSize(newDimension(246,138));jpConteudo.add(getPainel(),BorderLayout.CENTER);}returnjpConteudo;}publicstaticvoidmain(String[]args){SwingUtilities.invokeLater(newRunnable(){publicvoidrun(){IDGapplication=newIDG();application.getJFrame().setLocationRelativeTo(null);application.getJFrame().setVisible(true);}});}privateJFramegetJFrame(){if(jFrame==null){jFrame=newJFrame();jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);jFrame.setBounds(newRectangle(0,0,300,265));jFrame.setMinimumSize(newDimension(300,265));jFrame.setJMenuBar(getJJMenuBar());jFrame.setContentPane(getJpConteudo());jFrame.setTitle("IDG Soluções");}returnjFrame;}privateJMenuBargetJJMenuBar(){if(jJMenuBar==null){jJMenuBar=newJMenuBar();jJMenuBar.add(getFileMenu());}returnjJMenuBar;}privateJMenugetFileMenu(){if(fileMenu==null){fileMenu=newJMenu();fileMenu.setText("Arquivo");fileMenu.add(getPainelPrincipalMenuItem());fileMenu.add(getEquacoes2MenuItem());}returnfileMenu;}privateJMenuItemgetEquacoes2MenuItem(){if(Equacoes2MenuItem==null){Equacoes2MenuItem=newJMenuItem();Equacoes2MenuItem.setText("Equações do 2º Grau");Equacoes2MenuItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){PainelEquacaopneq=newPainelEquacao();trocaPainel(pneq.initialize());pneq=null;}});}returnEquacoes2MenuItem;}privateJMenuItemgetPainelPrincipalMenuItem(){if(painelPrincipalJMenuItem==null){painelPrincipalJMenuItem=newJMenuItem();painelPrincipalJMenuItem.setText("Painel Principal");painelPrincipalJMenuItem.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){Painel1pn1=newPainel1();trocaPainel(pn1.initialize());}});}returnpainelPrincipalJMenuItem;}privatevoidtrocaPainel(JPaneljpN){getJpConteudo().removeAll();getJpConteudo().repaint();setPainel(jpN);getJpConteudo().add(getPainel(),BorderLayout.CENTER);SwingUtilities.updateComponentTreeUI(getJFrame());}}
ainda não consegui achar o erro…
quando eu clicar no menu não era pra ativar o new dentro do metodo trocar Painel:???
mas mesmo assim ainda fica o painel criado quando eu chamo ele de novo …
ViniGodoy
No seu código você só cria os paineis uma única vez. Então, ou vc cria um método de limpeza em cada painel, ou recria os painéis.
L
linkbes
Blz vini… o problema era que eu tava criando os paineis estaticos…
eu tirei isso e fiz tudo de novo …
parece que ta funcionando agora…