Was ist die Swing-Entsprechung zur HTML-OptGroup?

8

Ich möchte, dass meine JComboBox mehrere Optionen zusammen gruppiert, ähnlich dem HTML optgroup :

%Vor%

Ich konnte dafür in Swing keine Lösung finden. Den UI-Renderer für die Combobox zu manipulieren, scheint eine schlechte Idee zu sein, da es OS & amp; L & amp; F-abhängig (und sie sind privat, so kann nicht verlängert werden).

    
Zak_Rhol 08.03.2011, 10:59
quelle

4 Antworten

12

Betrachten Sie die folgende Implementierung als eine grundlegende Anleitung zum Anwenden benutzerdefinierter Stile und zum Erstellen nicht auswählbarer Elemente:

%Vor%     
n0weak 08.03.2011, 11:37
quelle
7

Sie können dies in einem benutzerdefinierten Renderer tun, wie in Vorgehensweise beschrieben Verwenden Sie Kombinationsfelder: Einen benutzerdefinierten Renderer bereitstellen .

    
trashgod 08.03.2011 11:19
quelle
5

Ich glaube nicht, dass es einen einfachen Weg gibt, dies zu tun, aber es gibt einen Weg, dies zu tun.

Ich würde eine Datenmodellklasse implementieren, die die oben beschriebene Gruppierung angibt. Platzieren Sie Instanzen dieser Datenmodelle in Ihrer javax.swing.ComboBoxModel Implementierung Instanz.

Sie können dann ein javax implementieren .swing.ListCellRenderer , um die Ausgabe mit Einzügen für die Textdaten nach Belieben zu formatieren. Sie können nur die Java-Datei erweitern. swing.DefaultListCellRenderer oder möglicherweise seine Implementierung Großhandel aus der Java-Quelle.

Was die L & amp; F anbelangt, sollten Sie in der Lage sein, innerhalb der normalen Richtlinien zu bleiben, indem Sie die oben genannten Methoden verwenden, und Sie müssen nicht damit kämpfen, herauszufinden, wie Sie es implementieren. Schauen Sie sich die Standard-Swing-Komponenten an, die Ihnen eine Menge Einblick in den Umgang mit L & amp; F geben.

Außerdem denke ich, dass es Mechanismen gibt (du wirst mir vergeben müssen, es sind JAHRE, seit ich die volle Swing-Entwicklung gemacht habe), damit du bestimmen kannst, ob ein Gegenstand wählbar ist oder nicht.

    
Dave G 08.03.2011 11:17
quelle
2

Ich wollte das heute selbst, und ich habe den ganzen Tag damit verbracht, herauszufinden, wie man Dinge zusammenfügt, um ein ähnliches Modell mit einer JList zu implementieren, anstatt mit der vorgeschlagenen JComboBox. Ich habe endlich eine Lösung mit GlazedLists EventList und SeparatorList mit dem entsprechenden DefaultEventListModel entwickelt. Ich überschreibe den CellRenderer und das DefaultListSelectionModel. Am Ende habe ich meine eigene Antwort auf meine eigene Frage zu diesem Thema geschrieben: Wie verhindert man die Auswahl von SeparatorList.Separator in einer JList?

Hier ist mein abschließender Arbeitscode:

%Vor%     
JohnRDOrazio 22.02.2015 03:43
quelle

Tags und Links