2014-10-03 78 views

回答

8

您可以试试ControlsFX CheckComboBoxControlsFX是JavaFX的第三方控件库)。

checkcombobox

从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控制是那个单独的控制。

7

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

@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); 
+0

Combobox和Menubutton是不同的控件。 OP想要一个Combobox。 – 2015-07-29 09:51:10

+1

是的,但它无论如何是一个建设性的答案。我喜欢这个解决方案。 – 2016-02-26 10:27:15

+0

也可以将{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

相关问题