[英]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.