Ajuda CardLayout

[size=18]Pessoal, preciso de uma ajudinha, tenho um JFrame com CardLayout, e quando o usuário clica em um botão eu carrego um JPanel que está em uma classe externa, tudo nele funciona.

Porém quando o usuario utiliza o botão sair desse JPanel, ele sempre volta para o Painel Principal do Cardlayout, existe alguma forma de eu setar para qual JPainel do Cardlayout ele deve ir.

Exemplo> Jframe > Painel1 > vai para Painel 3 (classe externa) > volta para o Painel2

Sendo estes Painel1 e Painel2 membros do Cardlayout.

Agradeço desde já! Obrigadãoooooooo[/size]

Seus panels devem ser adicionados ao cardLayout da seguinte maneira:

frame.setLayout(new Layout(0, 0)); frame.add(panel1, "Panel1"); frame.add(panel2, "Panel2"); frame.add(panel3, "Panel3");

O segundo parâmetro é o objeto que o gerenciador de layout usará para identificar o componente (panel) dentro do container(frame). Nesse caso, o objeto identificador usado é uma String.

Para setar qual panel será mostrado pelo seu frame, faça assim:

CardLayout cardLayout = (CardLayout)frame.getLayout(); cardLayout.show(frame, "Panel1"); // o panel 1 será mostrado cardLayout.show(frame, "Panel2"); // o panel 2 será mostrado cardLayout.show(frame, "Panel3"); // o panel 3 será mostrado

Opa Matheus vlw pela ajuda,

Mas assim olha como esta o meu código, acredito que esteja correto, porém o que eu desejo não acontece:

  • Tenho uma classe que Extend JFrame

public class Principal extends JFrame

  • Tenho uma classe que Extend JPanel

public class Segundario extends JPanel

Durante uma etapa do código no Jframe eu chamo o JPanel assim:

Segundario S = new Segundario(); this.Painel_Principal.add(S, "Segundario"); MostraTela("Segundario");

O metodo MostraTela é este:

[code]private void MostraTela(String Nome){

    CardLayout Card = (CardLayout) this.Painel_Principal.getLayout();
    Card.show(this.Painel_Principal, Nome);      
}[/code]

Sendo assim eu tenho no Jframe um Cardlayout com vários paineis, porém um desdes paineis chama o Painel Segundario, e este apos executar suas ações dou um setVisible(false), contudo voltando ao Jframe ele sempre volta para o painel inicial, e não o painel que chamou o painel Segundario.