Salve a tutti,
Avevo dei dubbi sull'argomento pannello:
Nel seguente codice si crea un pannello che ha un bottone. Se si clicca sul bottone cancella tutti gli elementi del pannello. Il problema sta nel fatto che se io aggiungo degli elementi dopo "//Aggiungo altri elementi al pannello" mi elimina anche essi, ovviamente, perchè disegna prima tutti gli elementi e poi premendo sul pulsante li cancella.
Io volevo fare in modo di disegnare gli elementi dopo che il pulsante fosse stato premuto e che abbia cancellato tutti gli elementi disegnati precedentemente.
So che sarebbe possibile anche creando un nuovo pannello e lavorando su quello, ma volevo farlo cercando di risparmiare memoria. Volevo un consiglio (se meglio continuare per questa strada o semplicemente usare un altro pannello) e anche una soluzione se possibile.

In più volevo sapere se era possibile togliere solo la (x) di chiusura della finestra invece di togliere tutta la barra con il titolo e volevo anche sapere se era possibile fare in modo che se chiudo uno dei due pannelli nel secondo codice non si chiudono tutti e due.

Grazie mille.
codice:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 


public class NomeClasse extends JFrame implements ActionListener {


    public NomeClasse(){

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(Larghezza,Altezza);


//faccio tutte le mie cose per il pannello e lo aggiungo
JPanel Pannello=new JPanel(null);
add(Pannello);

//creo e aggiungo elementi al pannello
JButton Bottone=new JButton("Avanti");

Bottone.setBounds(new Rectangle(Dimension1,Dimensione2));
Bottone.setLocation(x,y);
Bottone.setActionCommand("Avanti");
Bottone.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                //rimuovo tutti gli elementi dal pannello
                //ridisegno il pannello
            }
        });
Pannello.add(Bottone);
//Aggiungo altri elementi al pannello


        
        setVisible(true);
    }
    public void actionPerformed(ActionEvent e){
    }
}
codice:
//prima classe
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 
public class Primo extends JFrame implements ActionListener {    
        public Primo(){
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setSize(Larghezza,Altezza);
                JPanel Pannello=new JPanel(null);
                add(Pannello);
        
                JButton Bottone=new JButton("Premi");
                Bottone.setBounds(Larghezza,Altezza);
                Bottone.setLocation(x, y);
                Bottone.setActionCommand("Premuto");
                Bottone.addActionListener(new ActionListener(){
                     public void actionPerformed(ActionEvent e){
                             new Secondo();
                         Pannello.removeAll();
                     }
                 });
                 Pannello.add(Bottone);
           }
           setVisible(true);
    }
    public void actionPerformed(ActionEvent e) {
    }
    public static void main(String[]args){
        new Primo();
    }
}
//seconda classe
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 
public class Secondo extends JFrame {
        public Secondo(){
                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 setSize(Larghezza,Altezza);
                 JPanel Pannello2=new JPanel(null);
                 add(Pannello2);
                 JLabel Testo=new JLabel("Testo");
                 Testo.setBounds(Larghezza,Altezza);
                 Testo.setLocation(x, y);
                 Pannello2.add(Testo);
        }
}