我想对用户所做的更改做出反应,而忽略我的代码所造成的更改。
例如,我有一个显示条目名称的TextField。当用户更改它时,我想保存更改,因此我已注册了更改侦听器:
nameTextField.textProperty().addListener(
(ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
entry.setName(newValue);
saveEntry();
}
);
问题是当我更新新条目的UI时,也会触发此更改侦听器:
nameTextField.setText(entry.getName());
我可以通过使用一个变量来解决这个问题,该变量表明我是否希望应用这些更改,但这感觉不对,它“闻起来”。
此外,这不仅仅是关于TextFields。我对ListViews和ComboBoxes也有同样的问题。
由于我是JavaFX的新手,我认为这是一个常见的问题,我觉得我错过了一些东西。那么,这通常如何在JavaFX中解决?