首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >组合框清算值问题

组合框清算值问题
EN

Stack Overflow用户
提问于 2012-08-27 21:01:55
回答 8查看 53.4K关注 0票数 22

我偶然发现了javafx2.2中组合框的一个问题。这是一个场景:

  • 用户单击'editFile‘editFile窗格将变为可见(使用setVisible方法)。

此窗格包含6个组合框。其中有三个有固定的项目: cboReport,cboSales,cboSend。其中三个从数据库(ObservableList)获取数据,并在窗格变为可见时填充: cboFile、cboCustomer、cboVet

  • 用户从cboFile中选择一个文件号。其余的组合框正在使用正确的值进行设置。当用户按下intended.
  • Next按钮时,文件将保存为
  • ,当用户按下close按钮时,文件将被保存。

当窗口关闭时,窗格上的数据将通过resetGUI_editFilePane()方法重置。有像这样的have行:

代码语言:javascript
复制
...
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的值。

代码语言:javascript
复制
cb.getSelectionModel().clearSelection();
// Clear value of ComboBox because clearSelection() does not do it
cb.setValue(null);
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-11-10 03:26:28

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

代码语言:javascript
复制
cboVet.getSelectionModel().clearSelection();
cboVet.getItems.clear();

做这样的事..。

代码语言:javascript
复制
parentNode.getChildren().remove(cboVet);
cboVet = new ComboBox();  // do whatever else you need to format your ComboBox
parentNode.add(cboVet);

您还需要在ComboBox上再次执行setItems(),以便填充新的‘ll。这不是一个理想的解决方案,但是它看起来像我所期望的那样工作,所提供的clearSelection()方法将会工作。

票数 20
EN

Stack Overflow用户

发布于 2013-12-06 17:48:45

这很简单。您只需要使用ComboBox的value属性。给你..。

代码语言:javascript
复制
ComboBox c;
c.valueProperty().set(null);

我希望这对你有用:-D

票数 24
EN

Stack Overflow用户

发布于 2013-01-06 22:43:42

您可以检索这些项目并将其全部删除:

代码语言:javascript
复制
cboVet.getItems().removeAll(cboVet.getItems());
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12142518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档