Множественный выбор JcomboBox

У меня есть jcombobox в моем приложении. и я хочу, чтобы он поддерживал множественный выбор (как это делается в jlist). есть ли пример кода?

2 ответов


Я думаю, что это невозможно, если вы не используете JList, как вы сказали.

на API для jcombobox в отчеты:

пользователь может выбрать значение из выпадающего списка, который появляется в запросы пользователей.

и JComboBox учебник:

списки не очень привлекательны, но они более уместны, чем поля со списком, когда количество элементов велико (скажем, более 20) или когда выбор нескольких элементов может быть допустимым.

обновление:

Я рассмотрел этот ответ, потому что на самом деле это "возможно" сделать с помощью ListCellRenderer, добавив флажок к каждому элементу. Пожалуйста, подумайте ответ реализовать это "решение".

, Я не думаю, что это хорошая идея по следующим причинам:
  1. есть элемент управления, такой как JList, который позволяет несколько выбор;
  2. управление JComboBox конструировано как раз для одиночного выбора деталя;
  3. мне не имеет смысла по-прежнему использовать элемент управления JComboBox и разрешить множественный выбор.

Это не совсем невозможно, но есть много работы, чтобы получить работу. Вам нужно будет создать свои собственные классы, чтобы расширить / реализовать все это:

  • ListCellRenderer (так что вы можете пометить выбранные элементы, когда всплывающее окно показывает и указать (по крайней мере), что есть несколько вариантов, когда это не так).
  • JComboBox (очевидно)
  • BasicComboBoxUI (это на самом деле, где большая часть работы)
  • BasicListUI (по крайней мере мне пришлось)
  • ComboBoxModel
И вам нужно будет разработать свой собственный класс, который реализует ItemListener, MouseListener, PopupMenuListener, MouseMotionListener, PropertyChangeListener, KeyListener, ListSelectionListener.
Подсказка: вам нужно будет переопределить много методов createXXXListener () в классах пользовательского интерфейса, чтобы обойти многие места, где отбрасываются несколько выборок.
[И это все еще не позволяет редактировать комбинированный мульти-выбор.]