Combobox清算值问题

标签 combobox javafx-2 javafx-8 selectionmodel

我偶然发现了 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/

相关文章:

Silverlight ComboBox 强制重新选择 SelectedItem

JavaFx:如何更新 GridPane 内动态创建的 TextField 的文本?

javafx-8 - JavaFX 8,如何在 Splitpane 中隐藏 Pane ?

JavaFX 从 ChoiceDialog 获取 ComboBox

.net - 1000个组合框绑定(bind)

c# - WPF/XAML 绑定(bind) : Work with real DataContext

c# - DataGridTemplateColumn (ComboBox, DatePicker) 重置/清除并且不触发 AddingNewItem

css - 无法将 css 文件加载到 osgi 包中

javafx-2 - 使用 java 6 部署 javafx

java - RayCastingSupport.intersectRayWithTerrain 始终返回 null