2015-05-11 24 views
17

Vorrei aggiungere una specie di listener al mio JavaFX's TextField che, quando un utente modifica il valore di TextField, l'applicazione stampa qualcosa sulla console.Listener di modifica del valore per il TextField di JavaFX

Ho cercato e ho trovato la seguente questione molto simile: Value Change Listener to JTextField

La risposta della questione di cui è molto chiara ed efficace, ma purtroppo è utile solo per JTextField (non JavaFX's TextField) perché dice che si dovrebbe utilizzare DocumentListener come questo:

// Listen for changes in the text 
textField.getDocument().addDocumentListener(new DocumentListener() { 
    public void changedUpdate(DocumentEvent e) { 
    warn(); 
    } 
    public void removeUpdate(DocumentEvent e) { 
    warn(); 
    } 
    public void insertUpdate(DocumentEvent e) { 
    warn(); 
    } 

ma in TextFields di JavaFX non siete in grado di farlo. Allora? Qual'è la soluzione?

(che descrive con codice può essere molto buona, ma se non è possibile, ogni accenno sarà apprezzato)

risposta

51

aggiungere un listener per textProperty del TextField:

TextField textField = new TextField(); 
textField.textProperty().addListener((observable, oldValue, newValue) -> { 
    System.out.println("textfield changed from " + oldValue + " to " + newValue); 
}); 
+1

Questo effettivamente rendere il campo di testo perdere la concentrazione , che è abbastanza frustrante per gli utenti. – codingpuss