我想使用Codename one创建一个包含Checkboxes作为子项的ComboBox。
我没有使用UIBuilder
为了可重用性,我创建了一个包含三个Checkbox的Container:
OverviewCheckBoxContainer
- Checkbox1
- Checkbox2
- Checkbox3
这已经有效了。
由于屏幕占用太多空间,我现在尝试将CheckBoxContainer添加到Combobox中,如下所示:
ComboBox
- OverviewCheckBoxCont
-...
但它不起作用,ComboBox只包含一个条目,它不是一个复选框,而是一个文本:
OverviewCheckBoxCont[x=...
(在屏幕上看不到更多内容)
如何解决此问题,因此有一个包含三个Checkbox的下拉菜单,可以切换onClick?
PS:
在主窗体中我添加了CheckBoxesComboBox而不是CheckBoxesCont:
this.add(BorderLayout.CENTER, checkBoxesComboBox)
而不是
this.add(BorderLayout.CENTER, checkBoxesCont)
答案 0 :(得分:2)
1.您可以使用简单的组合框,如下所示
ArrayList al = new ArrayList();
findComboBox().setModel(new DefaultListModel(al));
2.要在组合框中添加复选框,您必须自定义组合框
3.而不是自定义组合框,您可以使用显示和隐藏OverviewCheckBoxContainer的按钮,其中包含复选框列表
通过使用通用列表单元格渲染器自定义ComboBox,请参阅此内容:https://www.codenameone.com/manual/components.html#_combobox
在组合中使用复选框的问题在于,您会假设它们都将作为一组出现在组合中,并且组合不是为此而设计的。我只需使用Button
并显示带有一组复选框的对话框,然后设置Button
的文本以匹配结果。如果您愿意,可以将按钮设置为ComboBox
。