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

时间:2016-09-13 02:33:46

标签: java javafx combobox

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

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

3 个答案:

答案 0 :(得分:3)

检查代码,如果ComboBox没有项目是正确的,则隐藏ComboBox es的代码不正确。

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

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

答案 1 :(得分:1)

或者,要调用隐藏ComboBox es的方法,您可以使用自定义绑定将ComboBox es的visibleProperty绑定到自己的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 es,因为绑定会自动评估,因此没有人能看到您的空组合。

答案 2 :(得分:-2)

.getItems()方法会返回ObservableList<T>,因此您只需检查其.size()即可。这将告诉你它是否为空。

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

如果ComboBoxList填充,您也可以通过相同的.size()来检查列表是否为空。