Hallo,
Ich schreibe grad an einer JComboBox, die - wenn das Model eine bestimmte Anzahl an Einträgen übersteigt - einen Eintrag "Erweitern" hinzufügt, den man dann auswählen kann, um letztendlich alle Einträge anzuzeigen.
Wenn ich diesen Eintrag auswähle, dann wird folgendes gemacht:
- Ereignis itemStateChanged() wird ausgelöst, wo ich reagieren kann
- PopupMenü wird geschlossen
Genau diese Reihenfolge ist ungünstig, denn ich möchte, dass das PopupMenü nach dem Erweitern offen bleibt. Ein showPopup() in der Ereignisbehandlung bringt also nichts, und PopupListener.popupMenuWillBecomeInvisible(e) bietet auch keine cancel()-Methode.
Wie kann ich das Menü offen lassen?
Hinweis: JComboBox erweitern und die Methode hidePopup() überschreiben ist ein Weg, aber gibt es auch eine andere Möglichkeit, sodass ich eine normale JComboBox nur mit Model (und Renderer) bereichern muss?
P.S. Ich würde bei Interesse auch den Quelltext hier reinstellen, wenn das Problem gelöst wird. ;-)
Ich schreibe grad an einer JComboBox, die - wenn das Model eine bestimmte Anzahl an Einträgen übersteigt - einen Eintrag "Erweitern" hinzufügt, den man dann auswählen kann, um letztendlich alle Einträge anzuzeigen.
Wenn ich diesen Eintrag auswähle, dann wird folgendes gemacht:
- Ereignis itemStateChanged() wird ausgelöst, wo ich reagieren kann
- PopupMenü wird geschlossen
Genau diese Reihenfolge ist ungünstig, denn ich möchte, dass das PopupMenü nach dem Erweitern offen bleibt. Ein showPopup() in der Ereignisbehandlung bringt also nichts, und PopupListener.popupMenuWillBecomeInvisible(e) bietet auch keine cancel()-Methode.
Wie kann ich das Menü offen lassen?
Hinweis: JComboBox erweitern und die Methode hidePopup() überschreiben ist ein Weg, aber gibt es auch eine andere Möglichkeit, sodass ich eine normale JComboBox nur mit Model (und Renderer) bereichern muss?
P.S. Ich würde bei Interesse auch den Quelltext hier reinstellen, wenn das Problem gelöst wird. ;-)