Attendere la pressione di un tasto prima di continuare con il codice

di il
3 risposte

Attendere la pressione di un tasto prima di continuare con il codice

Salve a tutti, sono nuovo del forum, colgo l'occasione per salutare tutti i membri.

Ho due classi che estendono JFrame, X e Y. Nel frame X ho un bottone, alla pressione del quale viene eseguita una funzione x che genera un frame Y (una finestrella che ha un JTextField e un bottone). Io vorrei prendere il testo di questa JTextField e utilizzarlo nel codice restante della funzione x.
Il problema è che dovrei fare in modo di mettere un pausa l'esecuzione del codice di x in attesa della premuta del bottone. Ho letto dell'uso dei JDialog, ma non funziona sul mio programma.

3 Risposte

  • Re: Attendere la pressione di un tasto prima di continuare con il codice

    danlvet ha scritto:


    Ho due classi che estendono JFrame, X e Y. Nel frame X ho un bottone, alla pressione del quale viene eseguita una funzione x che genera un frame Y (una finestrella che ha un JTextField e un bottone). Io vorrei prendere il testo di questa JTextField e utilizzarlo nel codice restante della funzione x.
    Il problema è che dovrei fare in modo di mettere un pausa l'esecuzione del codice di x in attesa della premuta del bottone. Ho letto dell'uso dei JDialog, ma non funziona sul mio programma.
    Innanzitutto le interfacce grafiche vanno avanti solo "per eventi". Detto in generale non c'è il concetto di "aspetta (anche nel senso di sospendi il thread) in attesa che succeda qualcosa". Leggi anche quello che dicevo qualche giorno fa qui che si riaggancia in parte a questa questione.

    Quello che puoi fare è "ascoltare" (con un apposito listener) la pressione del pulsante nella finestra Y. E come farlo, dove farlo ecc... diventa più una questione di "design" delle classi.

    Il fatto che dici che JDialog "non funziona" .... dice poco, dipende come l'hai usato. E comunque da quanto dici, a te serve solo l'input di una linea di testo, giusto? Solo per questo non c'è bisogno di creare frame o dialog. Esiste già la classe JOptionPane che con i suoi metodi showXXXX è in grado di gestire una serie di "message box" tipiche, tra cui anche l'input di una semplice linea di testo.
  • Re: Attendere la pressione di un tasto prima di continuare con il codice

    Il mio problema è che quando chiamo la funzione x nel frame X, creo Y, che ha già un evento listener associato al bottone, la rendo visibile, e poi dovrei prendere il testo del TextField alla pressione del bottone, invece il codice non aspetta che premo il bottone, non so se mi sono spiegato.

    Non ho molta padronanza con il JDialog, quello che ho provato è creare Y come JDialog e rendoerlo modale con setModal(true); forse non è il modo corretto di usarlo. Hai qualche dritta ? Grazie
  • Re: Attendere la pressione di un tasto prima di continuare con il codice

    andbin ha scritto:


    Il fatto che dici che JDialog "non funziona" .... dice poco, dipende come l'hai usato. E comunque da quanto dici, a te serve solo l'input di una linea di testo, giusto? Solo per questo non c'è bisogno di creare frame o dialog. Esiste già la classe JOptionPane che con i suoi metodi showXXXX è in grado di gestire una serie di "message box" tipiche, tra cui anche l'input di una semplice linea di testo.
    Grazie mille! Ho risolto utilizzando il JOptionPane che non conoscevo e semplifica enormemente le cose.
    Comunque sia il JOptionPane mi ha dato l'idea anche per utilizzare quello che avevo già fatto: bastava fare ritornare a un metodo la stringa dell'input e passarla direttamente al metodo setText del JTextField con un'unica riga di codice.
Devi accedere o registrarti per scrivere nel forum
3 risposte