PDA

View Full Version : [JAVA] Stoppare esecuzione di una finestra ed eseguirne un'altra


mone.java
17-07-2009, 15:51
Come faccio a bloccare momentaneamente l'esecuzione di una finestra e nel frattempo eseguirne un altra (nella quale devo ricevere degli input) ed al termine di quest'ultima riattivare la finestra principale. Tutto ciò senza bloccare l'interfaccia???

es: come succede con il JOptionPane.showInputDdialog dove finchè io non immetto il valore eclicco ok il programma non prosegue la sua esecuzione..

garzie!!!

franksisca
17-07-2009, 17:51
azzardo mode on:

scaricati il tutorial sulla gestione dei focus, dovrebbe essere qualcosa "di quella"

PGI-Bis
17-07-2009, 18:38
Se non devi bloccare l'altra finestra apri semplicemente un nuovo JFrame e lo porti in primo piano.

Se invece vuoi interrompere l'interazione con la prima finestra allora puoi usare una JDialog.

Comunque JOptionPane usa delle JDialog e JDialog blocca l'input scartando tutti gli eventi AWT/Swing non destinati a sè stessa. Sun lo fa accedendo alle classi non pubbliche delle API ma si può fare anche sostituendo la coda degli eventi standard. E' chiaro però che qualsiasi alternativa precotta è preferibile.

mone.java
17-07-2009, 19:46
Potrei usare il JDialog come un frame ma come faccio a fare come con i JOptionPane che viene bloccato il resto del programma, e alla fine torna un valore di ritorno (come se fosse un input da tastiera che finchè non si preme invio il programma non va avanti). Io il Jframe che contiene il codice necessario l'ho già fatto il problema è che non riesco a bloccarlo, ciè stoppare l'esecuzione del programma principale finchè esso è aperto, per poi far ripartire il programma principale una volta che ho ottenuto i valori necessari. Se è necessario (e se ne avete voglia) vi posto il codice del JFrame.
Grazie!

PGI-Bis
17-07-2009, 20:21
L'interruzione del flusso di controllo è automatica quando la finestra di dialogo è "modale". Imposti la modalità della finestra di dialogo attraverso il suo costruttore. Dopodichè appena invochi:

dialog.setVisible(true);

il flusso di controllo si blocca finchè dialog resta sullo schermo. Per un'interfaccia personalizzata si tratta semplicemente di collegare la pressione del pulsante che conferma o annulla l'input all'invocazione dialog.setVisible(false) o dialog.dispose().

mone.java
17-07-2009, 20:40
Diao ti benedica!!!! :ave:

Grazie mille!!!!