PDA

View Full Version : [JAVA] JTextField: eseguire operazione subito dopo l'immissione del testo


quAntiVirus
29-10-2011, 12:22
Salve gente ho il seguente problema: ho una serie di campi di testo gestiti tramite l'oggetto JTextField. Io vorrei che venga eseguita un'operazione subito dopo l'immissione del testo, senza premere alcun JButton o cose così...semplicemente dopo l'immissione del testo, mi posiziono su un altro campo di testo ed in quel momento eseguo l'operazione prevista dal campo riempito precedentemente.
Esempio pratico: vorrei controllare se il campo inserito è un numero intero, se si posso andare avanti a riempire gli altri campi di testo, altrimenti restituisco un messaggio di errore e chiedo di reinserire un intero.
Tutto questo potrei farlo andando a fare un Integer.parseint del testo inserito nel campo e poi andandomi a gestire le eccezioni...ma come faccio ad effettuare questa operazione subito dopo l'immissione del testo (ovvero quando il puntatore del mouse non è più su quel campo di testo)?
Che tipo di evento devo usare?
Spero di essere stato chiaro.

Dan__88
29-10-2011, 14:53
Aggiungi un KeyListener al tuo JTextField e a suo interno sovrascrivi la funzione keyReleased.
Ad esempio, per controllare che non sia vuoto:

@Override
public void keyReleased(KeyEvent e)
{
String text = this.getText().trim();
if(text.equals(""))
{
// Codice..
// Ad esempio puoi impostare una var a FALSE
return;
}
}

banryu79
30-10-2011, 09:52
Un FocusListener che gestisce l'evento di focusLost del text field mi sembra più attinente alla necessità espressa.

Dan__88
30-10-2011, 11:47
Un FocusListener che gestisce l'evento di focusLost del text field mi sembra più attinente alla necessità espressa.

Giusto, comunque il principio è lo stesso.
Puoi usare il FocusListener e comportarti come ti ho scritto!

:)

quAntiVirus
30-10-2011, 17:15
Grazie ad entrambi per le risposte. ;)

webking
08-11-2011, 23:27
Dal punto di vista "logico" si potrebbe anche evitare che un carattere venga inserito se non è un intero o un segno di punteggiatura. Basterebbe intercettare l'evento "KeyTyped", controllare l'entità dell'ultimo carattere ed in caso non sia ammesso eliminarlo dal JTextField magari emettendo un beep. In linea di principio puoi usare la solita soluzione espressa da Dan__88.