Se il tuo scopo è quello di creare una finestra di dialogo (almeno così mi pare di capire), allora io utilizzo questa forma:
1) Creo una classe che estende JDialog (es MiaDialog)
2) Prevedo un metodo che mi indica se la chiusura della dialog deve essere interpretata come conferma (clic su OK) o come Annulla (pressione su Annulla o chiusura)
3) Se la chiusura è interpretata come conferma, allora ho a disposizione una serie di metodi per recuperare i valori inseriti nella Dialog.
Esempio:
codice:
class MiaDialog extends JDialog {
... // Pulsanti ed oggetti
private boolean valido; // Impostata per default a false
public MiaDialog(Frame parent) {
super(parent, titolo);
...
setModal( true );
setVisible( true);
setDefaultCloseOperation(HIDE_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae) {
if ( premuto_pulsante_conferma ) {
... // Controlli del caso: validità dati inseriti...
if ( è_tutto_a_posto ) {
valido = true;
}
} else {
valido = false; // per sicurezza
}
setVisible( false );
}
public boolean isValido() { return valido; }
... // Elenco metodi "get" per recupero valori inseriti
public void chiudi() { dispose(); }
}
...
MiaDialog md = new MiaDialog( this );
if ( md.isValido() ) {
... // Recupero i dati
}
md.chiudi();
Ciao.