繁体   English   中英

有没有办法检查ComboBox在JavaFX中是否有任何项目?

[英]Is there a way to check if a ComboBox has any items in JavaFX?

有没有一种方法可以检查ComboBox是否有任何项目或它是否为空? 我有一个ComboBox数组,我需要遍历每个数组,如果ComboBox中没有任何项目,那么我必须将其隐藏。 以下代码似乎不起作用:

for (ComboBox cmb : comboBoxes) {
    if (cmb.getItems().isEmpty()) {
        cmb.hide();
    }
}

用于检查ComboBox是否没有项目的代码正确,但是用于隐藏ComboBox代码却不正确。

ComboBox.hide如果打开,则仅关闭显示项目的弹出窗口。 它不会隐藏ComboBox 要隐藏ComboBox ,您需要设置可见性:

for (ComboBox cmb : comboBoxes) {
    if (cmb.getItems().isEmpty()) {
        cmb.setVisible(false);
    }
}

或者调用一个方法来隐藏ComboBox ES,你可以绑定visibleProperty中的ComboBox下载到自己的itemsProperty使用自定义绑定:

List<ComboBox<String>> comboBoxes = new ArrayList<>();
for(int i = 0; i< 10; i++) {
    ComboBox<String> combo = new ComboBox<>();
    combo.visibleProperty().bind(Bindings.createBooleanBinding(() -> !combo.getItems().isEmpty(),
        combo.itemsProperty().get()));
    comboBoxes.add(combo);
}

好处是,您无需调用任何方法来隐藏ComboBox ,因为绑定是自动评估的,因此没有人可以看到您的空组合。

.getItems()方法返回一个ObservableList<T>因此您只需检查其.size() 这将告诉您是否为空。

for (ComboBox cmb : comboBoxes) {
  if (cmb.getItems().size() <= 0) { // or cmb.getItems().isEmpty()
      cmb.setVisible(false); }
}

如果ComboBox由自己的List填充,则您也可以仅通过相同的.size()调用检查列表是否为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM