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…
Alternar paineis dentro de um frame principal
3 Respostas
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);
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!!!
We on The Tape! rsss
Criado 24 de setembro de 2009
Ultima resposta 24 de set. de 2009
Respostas 3
Participantes 2