从组合框中选择多个项目
答
您可以试试ControlsFX CheckComboBox(ControlsFX是JavaFX的第三方控件库)。
从CheckComboBox的javadoc刚才复制:
一个简单的UI控件,使得它可以选择一个组合框状的控制范围内的零个或多个项目。每行项目显示一个复选框,每行的状态可以通过检查模型查询。
// 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 controls developer lead comments上为JavaFX的内置ComboBox控件:
,你可以把你想要的任何选择模型实例为组合框,但只有一个选择都不会得到支持。我们这样做是为多选并没有真正意义的无剧烈变化的UI和UX,我们想出一个独立的控制可能会在将来开发,以更好地支持这种使用情况
从ControlsFX的CheckComboBox控制是那个单独的控制。
答
我需要类似的东西,这解决了我的问题。
@FXML
public MenuButton menuButton;
......
CheckBox cb0 = new CheckBox("x");
CustomMenuItem item0 = new CustomMenuItem(cb0);
CheckBox cb1 = new CheckBox("y");
CustomMenuItem item1 = new CustomMenuItem(cb1);
item0.setHideOnClick(false);
item1.setHideOnClick(false);
menuButton.getItems().setAll(item0,item1);
Combobox和Menubutton是不同的控件。 OP想要一个Combobox。 – 2015-07-29 09:51:10
是的,但它无论如何是一个建设性的答案。我喜欢这个解决方案。 – 2016-02-26 10:27:15
也可以将{CheckBox,CustomMenuItem}组合替换为一个{CheckMenuItem}。代码示例位于[javawiki.sowas.com](http://javawiki.sowas.com/doku.php?id=javafx:combobox-multi-selection)。此外,可以添加一个侦听器,以根据所选项目列表自动重命名MenuButton。例如使用String.join()。 – user824276 2017-08-11 18:18:52