JcomboBox Mehrfachauswahl

9

Ich habe eine jcombobox in meiner Anwendung. und ich möchte, dass es die Mehrfachauswahl unterstützt (wie in einer jlist). Gibt es ein Codebeispiel?

    
Adi Mor 12.12.2011, 08:23
quelle

2 Antworten

6

Ich denke, es ist nicht möglich, es sei denn, Sie verwenden eine JList, wie Sie gesagt haben.

Die JComboBox-API berichtet:

  

Der Benutzer kann einen Wert aus der Dropdown-Liste auswählen, die unter erscheint   die Anfrage des Benutzers.

Und ein JComboBox Tutorial :

  

Listen sind nicht besonders attraktiv, aber sie sind passender als   Kombinationsfelder, wenn die Anzahl der Elemente groß ist (z. B. über 20) oder wenn   Die Auswahl mehrerer Elemente ist möglicherweise gültig.

Aktualisierung:

Ich habe diese Antwort überprüft, weil es tatsächlich "möglich" ist, dies mit einem ListCellRenderer zu tun, indem Sie jedem Element ein Kontrollkästchen hinzufügen. Bitte beachten Sie diese Antwort , um diese "Lösung" zu implementieren.

Aus folgenden Gründen halte ich das jedoch nicht für eine gute Idee:

  1. Es gibt ein Steuerelement wie eine JList, das Mehrfachauswahl erlaubt;
  2. Ein JComboBox-Steuerelement ist nur für die Einzelelementauswahl konzipiert;
  3. Es macht für mich keinen Sinn, ein JComboBox-Steuerelement zu verwenden und eine Mehrfachauswahl zuzulassen.
Alberto Solano 12.12.2011, 10:40
quelle
0

Es ist nicht ganz unmöglich, aber es gibt viel zu tun, um den Job zu erledigen. Sie müssen Ihre eigenen Klassen erstellen, um all diese zu erweitern / zu implementieren:

  • ListCellRenderer (damit Sie die ausgewählten Elemente markieren können, wenn das Popup angezeigt wird und (zumindest) angeben, dass es mehrere Auswahlmöglichkeiten gibt, wenn dies nicht der Fall ist.
  • JComboBox (offensichtlich)
  • BasicComboBoxUI (das ist eigentlich der Punkt, wo die meiste Arbeit ist)
  • BasicListUI (zumindest musste ich)
  • ComboBoxModel
Und Sie müssen Ihre eigene Klasse entwickeln, die ItemListener, MouseListener, PopupMenuListener, MouseMotionListener, PropertyChangeListener, KeyListener, ListSelectionListener implementiert Hinweis: Sie müssen viele createXXXListener () -Methoden in den UI-Klassen überschreiben, um die vielen Stellen zu umgehen, an denen mehrere Auswahlen verworfen werden.
[Es ist immer noch keine bearbeitbare Mehrfachauswahl-Kombination möglich.]     
Rob Blaskett 19.12.2012 06:54
quelle

Tags und Links