JavaFX ComboBox值改变了循环

时间:2016-09-25 14:05:37

标签: javafx combobox

我有一个带有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

1 个答案:

答案 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 ;
        }

    }

}