Alternar paineis dentro de um frame principal

3 respostas
Marcelo_Quadros

Olá pessoal, estou iniciando em java e gostaria de saber como eu faço pra alternar paineis dentro de um frame principal.
Bom eu vou criar a classe Main extendendo JFrame… nessa classe tera um metodo que recebe um JPanel (esses JPanel serão construindos pelo Netbeans… ex Painel1, Painel1 etc…) void alternaPaineis(JPanel p){} a função desse metodo seria apagar um painel que esta dentro do frame principal e jogar um outro quando eu clicar num botão do painel que estiver dentro do JFrame. Ja tentei varias coisas como remove(), removeAll(). Até consegui alternar os paineis mas o novo JFrame era gerado sobrepondo o antigo e quando eu arrastava com o mouse eu tinha dois JFrames sendo um vazio e o novo que surgiu com o novo painel…

3 Respostas

cristian_clever

Bom dia!
Voce pode simplesmente dar um setContentPane atribuindo a ele o novo Panel, exemplo:

JFrame fr  = new JFrame("Teste");
		
		JPanel p1 = new JPanel();
		p1.setBackground(Color.GREEN);
		fr.setContentPane(p1);
		fr.pack();
		fr.setVisible(true);

		try {
			Thread.sleep(5000);
		}
		catch (InterruptedException e) {
			e.printStackTrace();
		}
		p1=null;
		
		JPanel p2 = new JPanel();
		p2.setBackground(Color.BLACK);
		fr.setContentPane(p2);
		fr.pack();
		fr.setVisible(true);
Marcelo_Quadros

Legal acho que agora da certo quando vc seta o painel1 como null ele será coletado pelo gc… correto? Minha preocupação era que eu alternasse os paineis e o primeiro continuasse em background, ou seja ele iria estar consumindo memoria… Vou desenvolver o metodo alternaPaineis (JPanel p ){} e vou postar… só uma coisinha eu troquei o fr.pack () por setSize pra visualizar melhor…
Muito obrigado pela dica!!!

cristian_clever

We on The Tape! rsss

Criado 24 de setembro de 2009
Ultima resposta 24 de set. de 2009
Respostas 3
Participantes 2