Duvida em trocar de JPanel atraves de um evento!

pessoal estou tendo dificuldade com isso,tenho um JFrame e nele tenho 2 JPanel, na verdade sao 3 sendo que, um JPanel é fixo(local)
contem 2 JRadioButton e os outros 2 estao em outras classes Panel,esses é q eu quero q varie .O q eu quero é qnd clicar em um JRadioButton apareca um JPanel e se clicar em outro JRadioButton apareca outro JPanel no mesmo JFrame logico,meu problema esta ai, nos 2 JRadioButton chamao um evento,e cada JPanel esta associado a um JRadioButton,uso o “getContentPane()” para poder pegar os JPanel,acho q essa logica esta errada,gostaria de saber como faco isso, meu codigo esta aki vlw abracao:


import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.*;
import javax.swing.*;


public class PopUp extends JFrame
{
    
    private JRadioButton rdb1,rdb2;
    private ButtonGroup grupoRdb;
    private JPanel painel;
    
    
    public PopUp()
    {
        super("faixas Selecionaveis");
        
        setLayout(new BorderLayout());
        
        grupoRdb = new ButtonGroup();
        
        painel = new  JPanel();
        
        rdb1 = new JRadioButton();
        rdb1.setText("Painel 1");
        rdb1.setBounds(20,30,100,100);
        
        rdb2 = new JRadioButton();
        rdb2.setText("Painel 2");
        rdb2.setBounds(60,30,100,100);
        painel.add(rdb1);
        painel.add(rdb2);
        
        grupoRdb.add(rdb1);
        grupoRdb.add(rdb2);
        
        add(painel);
        
                
        getContentPane().add(painel,BorderLayout.NORTH);
        
                  
        
       rdb1.addActionListener
         (
           new java.awt.event.ActionListener()
          {
               public void actionPerformed(java.awt.event.ActionEvent evt) 
               {
                 getContentPane().add(new painel1(),BorderLayout.CENTER);
               }
          }
        );
		
		rdb2.addActionListener
         (
           new java.awt.event.ActionListener()
          {
               public void actionPerformed(java.awt.event.ActionEvent evt) 
               {
                 getContentPane().add(new painel2(),BorderLayout.CENTER);
               }
          }
        );
		
        
    }

}

Aprenda a usar CardLayout, que isso resolve seus problemas (ter N JPanels que você quer mostrar no mesmo espaço, mas um de cada vez.)

Uma vez usando o CardLayout, você simplesmente usa setCard para mostrar o JPanel adequado.

blz coloquei o cardLayout,mais nao to conseguindo nem printar alguem pode me ajudar ai,em q eu estou errando




import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Component;
import java.awt.event.*;
import javax.swing.*;

public class PopUp extends JFrame
{
    
    private JRadioButton rdb1,rdb2;
    private ButtonGroup grupoRdb;
    private JPanel painel;
    
    public PopUp()
    {
        super("faixas Selecionaveis");
        

        
        //setLayout(new BorderLayout());
        
        JPanel cards = new JPanel(new CardLayout());
        CardLayout lay = new CardLayout();        
        painel = new  JPanel();
        grupoRdb = new ButtonGroup();
        
        rdb1 = new JRadioButton();
        rdb1.setText("teste painel 1");
        rdb1.setBounds(20,30,100,100);
        
        rdb2 = new JRadioButton();
        rdb2.setText("teste painel 2");
        rdb2.setBounds(60,30,100,100);
        painel.add(rdb1);
        painel.add(rdb2);
        
        grupoRdb.add(rdb1);
        grupoRdb.add(rdb2);
        
        //add(painel);
        
        cards.add(painel,"Primeiro");
        
        lay.show(cards,"Primeiro");
                
        //getContentPane().add(painel,BorderLayout.NORTH);
                  
        
       rdb1.addActionListener
         (
           new java.awt.event.ActionListener()
          {
               public void actionPerformed(java.awt.event.ActionEvent evt) 
               {
                 JOptionPane.showMessageDialog(null,"teste");
               }
          }
        );
       
        rdb2.addActionListener
         (
           new java.awt.event.ActionListener()
          {
               public void actionPerformed(java.awt.event.ActionEvent evt) 
               {                
                    JOptionPane.showMessageDialog(null,"teste2");
               }
          }
        );
    }

}
      
  
    

Não tem nada errado aqui hein?

         JPanel cards = new JPanel(new CardLayout());
         CardLayout lay = new CardLayout(); 

hehehe nem vi!!! vlw

blz mais como eu vou mostrar?

Amigo, você não se esqueceu do setCard em algum lugar?

cara eu nao sei como se apilca cardLayout,c vc for mais exato eu agradeceria,tipo tem q colocar isso e isso … c puder agradeceria muito

Aqui vai um exemplo bem tosco.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class TesteCardLayout extends JFrame {
    private JPanel painelBase;
    private JPanel painel1;
    private JPanel painel2;
    private CardLayout cardLayout;
    private JButton botao1;
    private JButton botao2;

    private void initComponents() {
        Container contentPane = getContentPane();
        contentPane.setLayout(new BoxLayout (contentPane, BoxLayout.Y_AXIS));
        // Vamos adicionar um JPanel que vai conter 2 cards, 
        // e 2 botões que escolherão cada um o JPanel adequado
        painelBase = new JPanel();
        cardLayout = new CardLayout();
        painelBase.setLayout (cardLayout);
        // Adicionando os cards
            painel1 = new JPanel();
            painel1.setBackground (Color.RED);
            painelBase.add (painel1, "Painel 1");
            painel2 = new JPanel();
            painel2.setBackground (Color.BLUE); 
            painelBase.add (painel2, "Painel 2");
        // Criando os botões
        botao1 = new JButton ("Escolha o painel 1");
        botao2 = new JButton ("Escolha o painel 2");
        botao1.addActionListener (new ActionListener() {
            public void actionPerformed (ActionEvent e) {
                cardLayout.show (painelBase, "Painel 1");
            }
        });
        botao2.addActionListener (new ActionListener() {
            public void actionPerformed (ActionEvent e) {
                cardLayout.show (painelBase, "Painel 2");
            }
        });
        // Juntando tudo
        contentPane.add (painelBase);
        contentPane.add (botao1);
        contentPane.add (botao2);
        // Só pra não ficar muito pequeno...
        setPreferredSize (new Dimension (200, 300));
    }

    public TesteCardLayout () {
        super ("Teste de Card Layout");
        initComponents();
    }    

    public static void main(String[] args) {
        TesteCardLayout teste = new TesteCardLayout();
        teste.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
        teste.pack();
        teste.setVisible (true);
    }
}

vlw obrigadao!!!

Passando só pra agradecer a voces dois…estou quebrando a cabeca a um tempo pra resolver um problema parecido!
Agora consegui!!
Obrigado aeee galera!

O tópico não é meu, mas acompanho o fórum a alguns meses e gostaria de agradecer pela explicação, como o cara aqui em cima falou, resolveu os meus problemas!!! valeeeu