我偶然发现了 javafx2.2 中 Comboboxes 的问题。这是场景:
- 用户单击“editFile”按钮。
- 另一个窗格变得可见(使用 setVisible 方法)。
此窗格包含 6 个组合框。其中三个有固定项目:cboReport、cboSales、cboSend。其中三个从 db (ObservableList) 获取数据并在窗格可见时填充:cboFile、cboCustomer、cboVet
- 用户从 cboFile 中选择一个文件号。其余的组合框正在设置正确的值。
- 用户按下保存按钮,文件按预期保存。
- 接下来,用户按下关闭按钮。
当窗口关闭时,窗格上的数据通过 resetGUI_editFilePane() 方法重置。有这样的行:
...
cboReport.getSelectionModel().clearSelection();
cboSales.getSelectionModel().clearSelection();
cboSend.getSelectionModel().clearSelection();
cboFile.getSelectionModel().clearSelection();
cboCustomer.getSelectionModel().clearSelection();
cboVet.getSelectionModel().clearSelection();
cboFile.getItems().clear();
cboCustomer.getItems().clear();
cboVet.getItems.clear();
...
当用户通过按下“editFile”按钮再次打开窗格时,我注意到只有“固定项目”组合框已清除其选择,动态填充的组合框显示最后选择的项目,尽管选择本身的值为null
. 这对我来说看起来像是一个图形错误,还是我做错了什么?
有没有办法解决这个问题或者重置组合框的最佳方法是什么?
编辑 2014/08/27:
这正式不是错误(clearSelection() 不清除值):
https ://bugs.openjdk.java.net/browse/JDK-8097244
官方的“解决方法”是清除选择后清除ComboBox的值。
cb.getSelectionModel().clearSelection();
// Clear value of ComboBox because clearSelection() does not do it
cb.setValue(null);