Altalena Java. Come aspettare altri Jframe
-
06-07-2019 - |
Domanda
In un JFrame, quando faccio clic su "login", apro un altro Jframe che è la finestra di accesso.
Come faccio ad aspettare che il mio Jframe principale attenda la chiusura del mio Jframe di accesso, prima di fare qualsiasi altra cosa?
Soluzione
Usa semplicemente una finestra di dialogo modale al posto di un frame, in questo modo non puoi fare nient'altro fino a quando non sarà chiuso
vedi http://mindprod.com/jgloss/modal.html per una spiegazione e vedi http://www.java2s.com/Tutorial/Java/0240__Swing/ASimpleModalDialog .htm per esempio di codice
Se insisti nell'usare un JFrame, potresti usare una soluzione alternativa coprendo l'altro fotogramma con una cornice di vetro .. Non è una bella soluzione, lo ammetto ..
Altri suggerimenti
Sono d'accordo sul fatto che una finestra di dialogo modale sarebbe l'opzione migliore qui, ma se dovessi rispondere a questa domanda nella sua forma più generale, dì:
Come faccio aspettare un JFrame per un altro JFrame?
Direi che il modo più semplice per raggiungere questo obiettivo è registrando e licenziando i listener di eventi.
- Nel tuo " figlio " frame, registra "main" frame come listener di eventi.
- Nel tuo " principale " telaio,
- implementa la tua scelta di ascoltatore, ad es.
ActionListener
- nel metodo chiamato dall'ascoltatore, ad es.
actionPerformed
, codifica la logica che gestisce ciò che accade su ciascuna delle azioni a cui può rispondere nel messaggio "figlio"; telaio.
- implementa la tua scelta di ascoltatore, ad es.
È possibile implementarlo facilmente in un numero infinito di situazioni, incluso lo scenario di accesso descritto nella domanda.
Usa JModalFrame invece di JFrame.