我偶然发现了 javafx2.2 中组合框的问题。这是场景:
- 用户点击“editFile”按钮。
- 另一个 Pane 变得可见(使用 setVisible 方法)。
此 Pane 包含 6 个组合框。 其中三个有固定项目:cboReport、cboSales、cboSend。其中三个从数据库(ObservableList)获取数据,并在 Pane 可见时填充:cboFile、cboCustomer、cboVet
- 用户从cboFile 中选择一个文件号。其余组合框正在设置正确的值。
- 用户按下保存按钮,文件将按预期保存。
- 接下来,用户按下关闭按钮。
当窗口关闭时, Pane 上的数据将通过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”按钮再次打开 Pane 时,我注意到只有“固定项目”组合框清除了其选择,动态填充的组合框显示最后一个选定的项目,尽管选择本身的值是空
。这对我来说看起来像是一个图形错误,还是我做错了什么?
有什么办法可以解决这个问题或者重置组合框的最佳方法是什么?
编辑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);
最佳答案
这很简单。您只需要使用 ComboBox 的 value 属性即可。给你....
ComboBox c;
c.valueProperty().set(null);
我希望这对你有用:-D
关于Combobox清算值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142518/