组合框选择未重置到 javafx 2.2 中的下拉列表(项目)的顶部

ComboBox selection not reset to top of dropdown list (items) in javafx 2.2

我有一个源组合框来填充第一页中显示的源字段(25-30 项)

"A"

"B"

...

"Z"

我已经从 ComboBox 中选择了最后一项,如下所示

"Z"

保存后遍历下一页时,我需要将源组合选择设为空白,因此我返回以下代码以将源组合框重置为指向第一项(将显示重置为从顶部开始供用户选择的下拉列表)

// 我在源列表中的第一个值是空格 - a€?a€?

1
                    sourceComboBox.setValue("");

即使您使用以下代码片段,例如

1
2
3
                    sourceComboBox.getSelectionModel().selectFirst();
                    sourceComboBox.getItems().clear();
                    sourceComboBox.getSelectionModel().clearAndSelect(0);

但是当我点击打开组合框下拉菜单时,它仍然从底部显示下拉菜单,如下所示

...

"X"

"Y"

"Z"

我无法发布代表组合框值的图像,所以在上面的例子中放了。

这对我来说像是一个图形错误,还是我做错了什么?
我在下面的问题中看到了类似的问题,但到目前为止没有建议解决方法
组合框清除值问题


如果您想简单地"重置"组合框,我认为您所要做的就是将值设置为 null,如下所示:

1
sourceComboBox.setValue(null);

当我尝试它们时,大多数事情都给了我一个错误。最适合我的是使用这个

1
comboBox.getSelectionModel.clearSelection();

这实际上会将 ComboBox 的值设置为 null。因此,如果您在其他地方引用 ComboBox 的值,则使用 this

检查 ComboBox 的值是否为 null 变得很重要

1
2
if(comboBox.getValue() != null)
  //Code segment here


以下是您要查找的代码。它会将其重置为您在括号内提供的任何索引。

sourceComboBox.setSelectedIndex(0);

祝你好运


我遇到了几乎完全相同的情况,并在寻找解决方案时遇到了您的问题。幸运的是,我想出了一个强制组合框重置的解决方法。当您重置窗格上的数据时,而不是执行以下操作:

1
2
sourceComboBox.getSelectionModel().clearSelection();
sourceComboBox.getItems.clear();

做这样的事...

1
2
3
parentNode.getChildren().remove(sourceComboBox);
sourceComboBox= new ComboBox();  // do whatever else you need to format your ComboBox
parentNode.add(sourceComboBox);

您还需要在您的 ComboBox 上再次执行 setItems(),以便填充新的 ComboBox。这不是一个理想的解决方案,但它似乎可以正常工作,因为我期望提供的 clearSelection() 方法会。


ComboBox 控件没有像 ListViewscrollTo(index) 那样的方法。所以似乎很难解决这种行为。您可以在 JavaFX Jira 发出功能请求。