当我点击组合框的外部(该窗口上的可用空间)时,组合框选择将消失并打印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 ... " />
答案 0 :(得分:2)
每次通过单击打开ComboBox
弹出窗口,都会删除所有项目(应该通过在项目列表中调用List.clear
来完成),然后再读取它们。由于ComboBox
的值不能是items
中的值,因此该值设置为null
。通过单击除ComboBox
弹出窗口中的项目之外的某个位置来选择新值不会更改所选项目。
你绝对不应该清除并阅读每次点击的所有项目。只需添加一次项目。在这种情况下,initialize
方法将是适合这样做的地方。
从控制器中删除addOptionToComboBox
方法并添加
public void initialize() {
routineGridShowComboBox.getItems().setAll("Hello", "World");
}
或将正文中的代码添加到现有的initialize
方法。