// create the data to show in the CheckComboBox
final ObservableList<String> strings = FXCollections.observableArrayList();
for (int i = 0; i <= 100; i++) {
strings.add("Item " + i);
}
// Create the CheckComboBox with the data
final CheckComboBox<String> checkComboBox = new CheckComboBox<String>(strings);
// and listen to the relevant events (e.g. when the selected indices or
// selected items change).
checkComboBox.getCheckModel().getSelectedItems().addListener(new ListChangeListener<String>() {
public void onChanged(ListChangeListener.Change<? extends String> c) {
System.out.println(checkComboBox.getCheckModel().getSelectedItems());
}
});
}
注意:JavaFX内置combobox控件上的JavaFX controls developer lead comments: 你可以把任何你想要的选择模型示例放到ComboBox中,但只有单一选择将永远被支持。我们这样做是因为如果不对UI和UX进行重大更改,多重选择就没有意义了,我们认为未来可以开发一个单独的控件来更好地支持这种用例 ControlsFX中的CheckComboBox控件就是这样一个单独的控件。
4条答案
按热度按时间vd2z7a6w1#
您可以尝试ControlsFX CheckComboBox(ControlsFX是JavaFX的第三方控件库)。
从CheckComboBox javadoc复制:
一个简单的UI控件,可以在类似ComboBox的控件中选择零个或多个项。每个行项都显示一个CheckBox,并且可以通过检查模型查询每行的状态。
注意:JavaFX内置combobox控件上的JavaFX controls developer lead comments:
你可以把任何你想要的选择模型示例放到ComboBox中,但只有单一选择将永远被支持。我们这样做是因为如果不对UI和UX进行重大更改,多重选择就没有意义了,我们认为未来可以开发一个单独的控件来更好地支持这种用例
ControlsFX中的CheckComboBox控件就是这样一个单独的控件。
cmssoen22#
我需要类似的东西,这解决了我的问题。
bq8i3lrv3#
我知道这是一个老帖子,但这里只是一个极简主义的工作解决方案,正如@user82426评论所描述的那样,建议使用“加入”部分。这是使用http://javawiki.sowas.com/doku.php?id=javafx:combobox-multi-selection构建的。
如前所述,这不是一个组合框,但一个菜单按钮…然而,它确实填补了需要,我正在寻找一个更好的组合框,所以我认为它可以帮助其他;- )...
这就是:
6mw9ycah4#
如果你看一下ComboBox类的源代码,它说“一个ComboBox只支持单选”。所以你需要做一个自己的ComboBox,或者使用一个库,我推荐controlsFX。