Salve ho creato una classe Finestra che voreri utilizzare per creare finestre ed inserirci dentro i vari campi,
ho creato + costruttori in modo che la finestra possa essere creata con + opzioni.
Fino alla creazione da costruttore la finestra viene creata , se voglio invece inserire le varie parti(bottoni aree testo eccc.) non funziona .Vorrei che mi aiutaste a capire il funzionamento e i miei errori:

Finestra:

codice:
import java.awt.*;
import javax.swing.*;

public class Finestra {
    
   private String titolo;
   private int altezza,larghezza;
   private boolean centra;
   private JPanel c;  //creo pannello per aggiungere le parti nei metodi
   private JFrame f;  //creo frame per utilizzarlo in centra allarga ecc
   
   
    public Finestra(String titolo, int altezza, int larghezza, boolean centra) {
        this.titolo = titolo;
        this.altezza = altezza;
        this.larghezza = larghezza;
        this.centra = centra;
        
        f=new JFrame(titolo); //
        f.setSize(larghezza,altezza);
        if(centra){
            centrafinestra(f);
        }
        else{
            f.setLocation(100,100);
        }
        
		JPanel c = new JPanel();
		f.setContentPane(c);
		f.setVisible(true);

		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		

    }

    public Finestra(String titolo, int altezza, int larghezza) {
        this.titolo = titolo;
        this.altezza = altezza;
        this.larghezza = larghezza;
        
        f=new JFrame(titolo);
        f.setSize(larghezza,altezza);
        f.setLocation(100, 100);        
		JPanel c = new JPanel();
		f.setContentPane(c);
		f.setVisible(true);

		
		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    public Finestra(String titolo) {
        this.titolo = titolo;
        JFrame f=new JFrame(titolo);
        f.setSize(400,400);
        f.setLocation(100, 100);
		JPanel c = new JPanel();
		f.setContentPane(c);
		f.setVisible(true);

		
		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    }

    public Finestra() {
        JFrame f=new JFrame();
        f.setSize(400,400);
        f.setLocation(100, 100);
		JPanel c = new JPanel();
		f.setContentPane(c);
		f.setVisible(true);

		f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);        

    }        

    
    
   
   public void centrafinestra(JFrame w){
		Dimension schermo = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension finestra =w.getSize() ;
		
		f.setLocation((schermo.width-finestra.width)/2,(schermo.height-finestra.height)/2);

       
   }
   
   public void inserisciEtichetta(String nomeetichetta){
		JLabel etichetta = new JLabel(nomeetichetta);
		c.add(etichetta);
	   
   }

   public void inserisciBottone(String nomebottone){
	   JButton bottone= new JButton(nomebottone);
	   c.add(bottone);

       
   }
    
   public void InserisciAreatesto(String nomeopzionale,int larghezzaArea){
		JTextField areatesto = new JTextField(nomeopzionale,larghezzaArea) ;
		c.add(areatesto);

   } 
   
   public void inserisciTitoloFinestra(String Titolo){
           f=new JFrame(titolo);


       
   }
   public void set_grandezzaFinestra(int newLarghezza , int newAltezza){
	   f.setSize(newLarghezza, newAltezza);
       
   }
   
   
   
}
CreaFinestra

codice:
public class CreaFinestra {


    public static void main(String[] args) {
        Finestra w = new Finestra("Finestrona",800,800,false);
        w.inserisciBottone("bottone");
       
    }
}
Credo anche di aver capito perchè , perchè una volta costruita una finestra non posso aggiungere le varie "parti" , ma ne devo creare una nuova .
Domando facendo delle variazioni al codice è possibile fare quello che ho detto(esempio che i metodi chiudano la finestra costruita e ne creino una nuova aggiungendo le "parti" del metodo)?