从组合框中选择多个项目

Odu*_*dum 2 java javafx fxml

请问我想知道如何更改javafxml组合框的选择模型,以便它可以允许多个选择.任何贡献将不胜感谢.

jew*_*sea 14

您可以尝试使用ControlsFX CheckComboBox(ControlsFX是JavaFX的第三方控件库).

checkcombobox

刚刚从CheckComboBox javadoc复制:

一个简单的UI控件,可以在类似ComboBox的控件中选择零个或多个项目.每个行项都显示一个CheckBox,并且可以通过检查模型查询每一行的状态.

 // 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());
     }
 });
 }
Run Code Online (Sandbox Code Playgroud)

注意:JavaFX控制开发人员JavaFX的内置组合框控件的评论:

您可以将所需的任何选择模型实例放入ComboBox,但只支持单个选择.我们之所以这样做是因为如果不对用户体验和用户体验做出重大改变,多项选择并没有真正意义,我们认为将来可以开发一个单独的控件来更好地支持这个用例

来自ControlsFX的CheckComboBox控件是单独控制的.


小智 9

我需要类似的东西,这解决了我的问题.

@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);
Run Code Online (Sandbox Code Playgroud)

  • 是的,但无论如何都是建设性的答案.我更喜欢这个解决方案 (3认同)