是否有办法检查ComboBox
中是否有任何项目或是否为空?我有一个ComboBox
数组,我需要遍历它们中的每一个,如果ComboBox
中没有项目,那么我必须隐藏它。下面的代码似乎不起作用:
for (ComboBox cmb : comboBoxes) {
if (cmb.getItems().isEmpty()) {
cmb.hide();
}
}
检查代码,如果ComboBox
没有项目是正确的,那么隐藏ComboBox
es的代码是不正确的。
ComboBox.hide
只关闭弹出显示项目,如果它是打开的。它不隐藏ComboBox
。要隐藏ComboBox
,您需要设置可见性:
for (ComboBox cmb : comboBoxes) {
if (cmb.getItems().isEmpty()) {
cmb.setVisible(false);
}
}
或者调用一个方法来隐藏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
e,因为绑定是自动评估的,因此没有人可以看到您的空组合。
.getItems()
方法返回ObservableList<T>
,因此您可以检查其.size()
。它会告诉你是否为空。
for (ComboBox cmb : comboBoxes) {
if (cmb.getItems().size() <= 0) { // or cmb.getItems().isEmpty()
cmb.setVisible(false); }
}
如果ComboBox
被自己的List
填充,您也可以使用相同的.size()
调用检查列表是否为空。