如何更改TextField的文本时如何生成新事件?
答案 0 :(得分:12)
使用TextField
textProperty
:
textField.textProperty().addListener((obs, oldText, newText) -> {
System.out.println("Text changed from "+oldText+" to "+newText);
// ...
});
答案 1 :(得分:8)
或使用ChangeListener
界面。
textField.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable,
String oldValue, String newValue) {
System.out.println(" Text Changed to " + newValue + ")\n");
}
});
答案 2 :(得分:-1)
我的解决方案:
....
String temp;
....
//previously in some method when starting to take initial value of the textfield and save it in a temporal
temp=id_textfield.getText();
....
//when losing focus we check if the new value is different
id_textfield.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
//focus in
if (newValue) {
temp = id_textfield.getText();
}
//focus out
if (oldValue) {
if (!(temp.equals(id_textfield.getText()))) {
System.out.println("New String")
}
}
}
});