我偶然发现了javafx2.2中组合框的一个问题。这是一个场景:
此窗格包含6个组合框。其中有三个有固定的项目: cboReport,cboSales,cboSend。其中三个从数据库(ObservableList)获取数据,并在窗格变为可见时填充: cboFile、cboCustomer、cboVet
当窗口关闭时,窗格上的数据将通过resetGUI_editFilePane()方法重置。有像这样的have行:
...
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‘按钮打开窗格时,我注意到只有'fixed item’组合框清除了他们的选择,动态填充的组合框显示最后选择的项,尽管选择本身的值是null
。这看起来像是图形错误,还是我做错了什么?
有没有办法解决这个问题,或者重置组合框的最好方法是什么?
EDIT 2014/08/27:
这不是一个官方的bug(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);
发布于 2012-11-10 03:26:28
我遇到了几乎完全相同的情况,并在寻找解决方案时遇到了您的问题。幸运的是,我想出了一个强制ComboBoxes重置的解决方法。当您重置窗格上的数据时,而不是执行以下操作:
cboVet.getSelectionModel().clearSelection();
cboVet.getItems.clear();
做这样的事..。
parentNode.getChildren().remove(cboVet);
cboVet = new ComboBox(); // do whatever else you need to format your ComboBox
parentNode.add(cboVet);
您还需要在ComboBox上再次执行setItems(),以便填充新的‘ll。这不是一个理想的解决方案,但是它看起来像我所期望的那样工作,所提供的clearSelection()方法将会工作。
发布于 2013-12-06 17:48:45
这很简单。您只需要使用ComboBox的value属性。给你..。
ComboBox c;
c.valueProperty().set(null);
我希望这对你有用:-D
发布于 2013-01-06 22:43:42
您可以检索这些项目并将其全部删除:
cboVet.getItems().removeAll(cboVet.getItems());
https://stackoverflow.com/questions/12142518
复制相似问题