JcomboBox多选

时间:2011-12-12 08:23:07

标签: swing jcombobox multi-select

我的应用程序中有一个jcombobox。 我希望它支持多种选择(就像在jlist中一样)。 有没有代码示例?

2 个答案:

答案 0 :(得分:7)

我认为这是不可能的,除非你使用JList,就像你说的那样。

JComboBox API报告:

  

用户可以从下拉列表中选择一个值,该列表显示在   用户的请求。

和JComboBox tutorial

  

列表并不十分吸引人,但它们更适合   当项目数量很大(例如,超过20)或何时,组合框   选择多个项目可能有效。

<强>更新

我回顾了这个答案,因为实际上使用ListCellRenderer“可能”,为每个项添加一个复选框。请考虑this answer来实施此“解决方案”。

但是,由于以下原因,我认为这不是一个好主意:

  1. 有一个像JList这样的控件允许多个选择;
  2. JComboBox控件专为单项选择而设计;
  3. 我仍然使用JComboBox控件并允许多项选择。

答案 1 :(得分:0)

这并非不可能,但要完成工作还有很多工作要做。您需要创建自己的类来扩展/实现所有这些:

  • ListCellRenderer(因此您可以在弹出窗口显示时标记所选项目,并指示(至少)有多个选项时不显示)。
  • JComboBox(显然)
  • BasicComboBoxUI(这实际上是大部分工作的地方)
  • BasicListUI(至少我不得不)
  • 的ComboBoxModel
并且您需要开发自己的类来实现ItemListener,MouseListener,PopupMenuListener,MouseMotionListener,PropertyChangeListener,KeyListener,ListSelectionListener。 提示:您需要覆盖UI类中的许多createXXXListener()方法,以绕过多个选择被丢弃的地方。
[并且它仍然不允许可编辑的多选组合。]