Quote:
Originariamente inviato da d_cainoii
Ho due classi, un classe principale, facciamo il Main e una classe secondaria chiamata Finestra
Finestra ha l'unico scopo di creare una finestra, tramite Jpanel e Jframe il quale contiene un'unico bottone "chiudi", premendo il suddetto bottone dovrebbe chiudersi la finestra ma non il Main
|
Molto semplicemente, nel metodo actionPerformed dell'ActionListener registrato sul tuo bottone "chiudi" crei un WindowEvent con il messaggio "Window Closing" e lo invii al JFrame da chiudere.
Ovviamente devi avere a disposizione un riferimento a quel JFrame.
Esempio (FRAME è il riferimento al JFrame da chiudere).
Codice:
...
public void actionPerformed(ActionEvent e) {
WindowEvent close = new WindowEvent(FRAME, WindowEvent.WINDOW_CLOSING);
FRAME.dispatchEvent(close);
}
In questo modo invece di chiamare un setVisible(false) sul JFrame piuttosto che un dispose(), gli verrà inviata una "generica" richiesta di chiusura che il tuo JFrame onorerà secondo la politica di chiusura che gli hai impostato quando gli hai detto:
Codice:
...
fin.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
...
In questo modo, in altre parole, premere sul tuo bottone "chiudi" risulterà equivalente al premere sul bottone-icona di chiusura della finestra che è normalmente presente nella barra del titolo.