Ich beziehe eine JComboBox (mit addItem()
) mit allen Elementen einer Sammlung. Jedes Element in der Sammlung ist ein HashMap
(also eine ComboBox von Hashmaps ..).
Meine Frage ist - Da ich jedes Element als HashMap
benötige, wie setze ich den Text in der Combobox auf der GUI auf apear? Es muss der Wert eines bestimmten Schlüssels in der Karte sein. Normalerweise, wenn ich eine Combobox mit meinem eigenen Typ bevölkere, würde ich einfach die toString()
-Methode übersteuern ... aber ich bin nicht sicher, wie ich das erreichen kann, da ich eine Java HashMap verwende.
Irgendwelche Ideen (wenn möglich, ohne meine eigene HashMap zu implementieren)?
Update : Es scheint, als ob es nicht sowieso zu vermeiden, dass das Objekt in der JComboBox toString () overded, wenn ich benutzerdefinierte Funktionalität möchte .. Ich wünschte, es gab eine Möglichkeit, (1) anzugeben die Objekte, die in die JComboBox geladen werden sollen und (2) wie diese Objekte in der GUI erscheinen sollen.
(2) Geben Sie an, wie diese Objekte aussehen sollen erscheinen in der GUI.
Sie können ein beliebiges Objekt zum Modell hinzufügen und dann einen benutzerdefinierten Renderer erstellen, um das Objekt beliebig anzuzeigen. Einfaches Beispiel, das den toString () - Ansatz und den benutzerdefinierten Renderer-Ansatz zeigt:
%Vor% Wenn Sie die toString()
-Methode überschreiben möchten, können Sie einfach eine Decorator-Klasse erstellen, die Map
implementiert und eine HashMap
verwendet, um die benötigten Methoden zu implementieren und Ihre eigene Implementierung von toString()
zu geben.