Vedo il seguente codice in un progetto GUI/Java Swing:Come funziona questo codice Swing?
MyDialog dlg = new MyDialog(parent, isFizz);
MyDialogResults results = dlg.getResults();
eventBus.fireEvent(new MyDialogEvent(results));
Nel codice precedente, MyDialog extends JDialog
. In modo chiaro, una finestra di dialogo figlio viene costruita (e in qualche modo mostrata all'utente finale), quindi quando l'utente chiude la finestra di dialogo (facendo clic su OK o su un altro pulsante), un bean results
viene utilizzato per generare un nuovo evento sull'evento autobus.
Ma io sto lottando con due cose:
- Come/dove si Java stato detto di disegnare in realtà/mostrare la finestra di dialogo per l'utente ?; e
- Come/dove viene detto a Java di appendere/attendere che l'utente esca dalla finestra di dialogo, prima di attivare l'evento sul bus?
E 'che un bambino JDialog
mostrerà sempre la finestra di dialogo in cui viene creata la JDialog
, e non tornare dal costruttore fino a quando la finestra di dialogo si esce? Ecco la sinossi di HTE MyDialog
costruttore dall'alto:
public class MyDialog extends JDialog {
private boolean isFizz;
private MyDialogResults results;
// Getters and setters for all properties...
public MyDialog(Frame parent, boolean isFizz) {
super(parent, "My Dialog", true);
setIsFizz(isFizz);
setVisible(true);
dispose();
}
}
Grazie in anticipo per qualsiasi aiuto/conoscenza con la comprensione di come la finestra si apre, "blocca" (anche se so che la sua non è in realtà appeso/congelati), si chiude, e poi spara l'evento.
Grazie @Andrew Thompson (+1) - tuttavia per # 2 sono ancora confuso. Secondo il [costruttore Javadoc] (http://docs.oracle.com/javase/7/docs/api/javax/swing/JDialog.html#JDialog%28java.awt.Dialog,%20java.lang.String,% 20boolean% 29) l'impostazione 'modal' su true solo" blocca l'input dell'utente ad altre finestre di primo livello quando viene mostrato ". Ma non è la stessa cosa che sto descrivendo qui. Non credo che impedirebbe la prossima riga di codice ('MyDialogResults results = dlg.getResults();') dall'esecuzione fino alla fine del costruttore, poiché non è "input dell'utente". –
Il "true" nella super chiamata rende il dialogo modale. Ciò significa che la chiamata a 'setVisible (true)' non ritorna fino a quando la finestra di dialogo non viene chiusa. –
* "" blocca l'input dell'utente ad altre finestre di primo livello quando viene mostrato "* ..e ferma la prossima riga di codice dall'esecuzione (è ciò che dovrebbe essere aggiunto a quello). –