Problema com 2 Jpanels

Boa tarde a todos, meu primeiro post e ja é um problemão pra vcs ein… hhheeheh

Eu estou tentando Criar um app de 1 so JFrame.

e de acordo com o menu clicado eu uso o setContentPane()
para exibir o JPanel correto. até ai tudo funciona.

O problema é que cada vez que chamo o mesmo Jpanel
ele ja aparece preenchido com as informações anteriores.

não consigo fazer o JPanel ser recriado quando uso ele no setContentPane().

Alguem pode me dar uma luz? nem que seja de vela… heheheh…

O ideal seria para isso usar o CardLayout.

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.

Então vini… eu to fazendo assim:

private JFrame jFrame = null;  //  @jve:decl-index=0:visual-constraint="10,10"
	private JMenuBar jJMenuBar = null;
	private JMenu fileMenu = null;		
	private JMenuItem Equacoes2MenuItem = null;
	private JMenuItem painelPrincipalJMenuItem = null;
	
	private JPanel painel = null;
	private JPanel jpConteudo = null;  //  @jve:decl-index=0:visual-constraint="443,57"
	
	public JPanel getPainel()
	{
		if(this.painel == null)
		{
			Painel1 pn1 = new Painel1();
			setPainel(pn1.initialize());
		}
		return this.painel;
	}

	public void setPainel(JPanel painel)
	{
		this.painel = painel;
	}

	
	private JPanel getJpConteudo()
	{
		if (jpConteudo == null)
		{
			jpConteudo = new JPanel();
			jpConteudo.setLayout(new BorderLayout());
			jpConteudo.setSize(new Dimension(246, 138));
			jpConteudo.add(getPainel(), BorderLayout.CENTER);
		}
		return jpConteudo;
	}

	public static void main(String[] args)
	{		
		SwingUtilities.invokeLater(new Runnable()
		{
			public void run()
			{
				IDG application = new IDG();				
				application.getJFrame().setLocationRelativeTo(null);				
				application.getJFrame().setVisible(true);
			}
		});
	}
	
	private JFrame getJFrame()
	{
		if (jFrame == null)
		{	
			jFrame = new JFrame();
			jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			jFrame.setBounds(new Rectangle(0, 0, 300, 265));			
			jFrame.setMinimumSize(new Dimension(300, 265));			
			jFrame.setJMenuBar(getJJMenuBar());
			jFrame.setContentPane(getJpConteudo());
			jFrame.setTitle("IDG Soluções");
			
		}
		return jFrame;
	}

	private JMenuBar getJJMenuBar()
	{
		if (jJMenuBar == null)
		{
			jJMenuBar = new JMenuBar();
			jJMenuBar.add(getFileMenu());			
		}
		return jJMenuBar;
	}
	
	private JMenu getFileMenu()
	{
		if (fileMenu == null)
		{
			fileMenu = new JMenu();
			fileMenu.setText("Arquivo");
			fileMenu.add(getPainelPrincipalMenuItem());
			fileMenu.add(getEquacoes2MenuItem());
			
			
		}
		return fileMenu;
	}

	

	private JMenuItem getEquacoes2MenuItem()
	{
		if (Equacoes2MenuItem == null)
		{
			Equacoes2MenuItem = new JMenuItem();
			Equacoes2MenuItem.setText("Equações do 2º Grau");
		
			Equacoes2MenuItem.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					PainelEquacao pneq = new PainelEquacao();
					trocaPainel(pneq.initialize());	
					pneq = null;
				}
			});
		}
		return Equacoes2MenuItem;
	}
	
	private JMenuItem getPainelPrincipalMenuItem()
	{
		if (painelPrincipalJMenuItem == null)
		{
			painelPrincipalJMenuItem = new JMenuItem();
			painelPrincipalJMenuItem.setText("Painel Principal");
		
			painelPrincipalJMenuItem.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					Painel1 pn1 = new Painel1();
					trocaPainel(pn1.initialize());
				}
			});
		}
		return painelPrincipalJMenuItem;
	}
	
	

	private void trocaPainel(JPanel jpN)
	{
		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 …

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.

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…

vlw ai…