Sì, in genere si fa tutto nella stessa classe, anche se nessuno ti vieta di trasferire all'esterno questa gestione. Ecco l'esempio che visualizza, all'inizio, un pannello con un pulsante. Quando si clicca sul pulsante, il pannello viene sostituito da un altro pannello con una scritta:
codice:
public class Finestra extends JFrame implements ActionListener {
private JPanel pannello1;
private JPanel pannello2;
private JButton pulsante;
private JLabel scritta;
private Container c;
public Finestra() {
c = getContentPane();
c.setLayout( new BorderLayout() );
pannello1 = new JPanel();
pannello1.setLayout( null );
pulsante = new JButton("Clicca qui");
pulsante.setBounds(40, 40, 180, 30);
pulsante.addActionListener(this);
pannello1.add(pulsante);
c.add(pannello1);
}
public void actionPerformed(ActionEvent ae) {
// Qui tolgo il primo pannello,
// creo il secondo e lo aggiungi
c.remove(pannello1);
pannello1 = null;
doLayout();
pannello2 = new JPanel();
scritta = new JLabel("Questo è il secondo pannello");
pannello2.add(scritta);
c.add(pannello2);
doLayout();
}
public static void main(String [] args) {
Finestra f = new Finestra();
}
}
Ciao.