2011-12-12 14 views

Odpowiedz

6

Myślę, że to nie jest możliwe, chyba że używasz JList, tak jak powiedziałeś.

W JComboBox API raporty:

Użytkownik może wybrać wartość z listy rozwijanej, która pojawia się w żądanie użytkownika.

I JComboBox tutorial:

Listy nie są zbyt atrakcyjne, ale są one bardziej odpowiednie niż kombi skrzynek, gdy liczba elementów jest duży (powiedzmy, ponad 20) lub gdy selekcjonowanie wiele elementów może być ważnych.

Aktualizacja:

Sprawdziliśmy tę odpowiedź, ponieważ w rzeczywistości jest to "możliwe", aby to zrobić za pomocą ListCellRenderer, dodając pole do każdego elementu. Proszę rozważyć this answer, aby wdrożyć to "rozwiązanie".

Jednak nie sądzę, że to dobry pomysł z następujących powodów:

  1. istnieje kontrola jak JList, który umożliwia wybór wielokrotny;
  2. Sterowanie JComboBox jest przeznaczone tylko do pojedynczego wyboru elementów;
  3. Nie ma sensu nadal używać kontrolki JComboBox i zezwalać na wielokrotny wybór.
+0

porażka, dzięki jakikolwiek sposób –

+0

wiem, że to porażka.Serdecznie zapraszamy :-) –

+0

Nie, to możliwe, ale trzeba użyć Renderer – PeerNet

0

To nie jest niemożliwe, ale trzeba wykonać wiele pracy, aby wykonać zadanie. Będziesz musiał utworzyć własne klasy, aby rozszerzyć/wdrożyć wszystkie z nich:

  • ListCellRenderer (dzięki czemu można oznaczyć wybrane elementy, gdy pojawi się wyskakujące okno i wskazać (przynajmniej), że istnieje wiele wyborów, gdy nie jest) .
  • JComboBox (oczywiście)
  • BasicComboBoxUI (jest to faktycznie gdzie większość pracy jest)
  • BasicListUI (przynajmniej miałem)
  • ComboBoxModel
I trzeba rozwijać własną rękę klasa implementująca ItemListener, MouseListener, PopupMenuListener, MouseMotionListener, PropertyChangeListener, KeyListener, ListSelectionListener.
Podpowiedź: będziesz musiał zastąpić wiele metod createXXXListener() w klasach interfejsu użytkownika, aby ominąć wiele miejsc, w których odrzucono wiele wyborów.
[i nadal nie pozwalają na edycji wielokrotnego wyboru kombi.]