有没有办法检查ComboBox
中是否有任何项目或是否为空?我有一个ComboBox
es的数组,我需要遍历每一个,如果ComboBox
中没有项目,那么我必须隐藏它。以下代码似乎不起作用:
for (ComboBox cmb : comboBoxes) {
if (cmb.getItems().isEmpty()) {
cmb.hide();
}
}
答案 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); }
}
如果ComboBox
由List
填充,您也可以通过相同的.size()
来检查列表是否为空。