在框外单击时,ComboBox选择丢失

时间:2016-07-04 04:54:29

标签: javafx combobox

当我点击组合框的外部(该窗口上的可用空间)时,组合框选择将消失并打印null

这是控制器类

@FXML
public ComboBox routineGridShowComboBox;

public void actionForRoutineGridShowComboBox(ActionEvent event){
    System.out.println(routineGridShowComboBox.getValue());
}

public void addOptionToComboBox(){
    routineGridShowComboBox.getItems().removeAll(routineGridShowComboBox.getItems());
    routineGridShowComboBox.getItems().addAll("Hello","World");
}

这是FXML代码:

<ComboBox fx:id="routineGridShowComboBox" layoutX="24.0" layoutY="56.0" onAction="#actionForRoutineGridShowComboBox" onMouseClicked="#addOptionToComboBox" prefHeight="25.0" prefWidth="384.0" promptText="Choose your subject ... " />

1 个答案:

答案 0 :(得分:2)

每次通过单击打开ComboBox弹出窗口,都会删除所有项目(应该通过在项目列表中调用List.clear来完成),然后再读取它们。由于ComboBox的值不能是items中的值,因此该值设置为null。通过单击除ComboBox弹出窗口中的项目之外的某个位置来选择新值不会更改所选项目。

你绝对不应该清除并阅读每次点击的所有项目。只需添加一次项目。在这种情况下,initialize方法将是适合这样做的地方。

从控制器中删除addOptionToComboBox方法并添加

public void initialize() {
    routineGridShowComboBox.getItems().setAll("Hello", "World");
}

或将正文中的代码添加到现有的initialize方法。