我有一个带有ComboBox的程序可以更改视图。如果有未保存的编辑并且用户更改了ComboBox,如果他们乐意继续,则会出现一个对话框警告他们,如果是,则更改视图...但如果他们拒绝,我希望ComboBox恢复为以前的值。
我试图只发布与问题相关的代码以简洁...警告对话框代码发生在别处(在我的viewController类中),当前组存储在我的整个程序可以看到的类中( globalFields)。
这是代码,因此问题是:
@FXML
private void handleClassesComboBox(ActionEvent event) {
if (classesComboBox.getSelectionModel().getSelectedItem() != null) {
if (viewController.ifUnsavedChangesUserHappyToLose()) {
globalFields.setCurrentGroup(classesComboBox.getSelectionModel().getSelectedItem());
setView();
} else{
classesComboBox.setValue(globalFields.getCurrentGroup());
}
}
因此,如果他们不乐意丢失更改,我想恢复到之前的选择,但当然这会导致循环,因为此更改会再次触发handleClassesComboBox方法。
我确定这很明显,但我无法在没有对话框反复循环的情况下恢复逻辑。
这也是我在这里的第一个问题,所以如果我错过任何事情或解释明显让我知道!!
谢谢!
VIN
答案 0 :(得分:0)
你可以设置一个标志:
private boolean checkUserChange = true ;
然后
@FXML
private void handleClassesComboBox(ActionEvent event) {
if (classesComboBox.getSelectionModel().getSelectedItem() != null) {
if (checkUserChange && viewController.ifUnsavedChangesUserHappyToLose()) {
globalFields.setCurrentGroup(classesComboBox.getSelectionModel().getSelectedItem());
setView();
} else{
checkUserChange = false ;
classesComboBox.setValue(globalFields.getCurrentGroup());
checkUserChange = true ;
}
}
}