Hallo allerseits,
ich habe das schon in anderen Foren gefragt, aber keiner wusste bisher eine Lösung.
Ich möchte eine JComboBox bauen, die ihr PopupMenu automatisch aufklappt, wenn man mit dem Mauszeiger draufkommt (kein Problem) und automatisch wieder zuklappt, wenn man mit dem Mauszeiger das PopupMenu wieder verlässt (das ist das Problem).
Ersteres ließ sich mit einem MouseListener lösen, den ich auf alle Elemente (Items) des PopupMenus setzte. Bei mouseEntered() öffne ich dann das Popup mit showPopup(), wenn es noch nicht offen ist. Das mouseExited() Event kommt dann allerdings auch bei jedem Element, das man verlässt, also auch dann, wenn man nur durch die Liste der Items scrollt. Ich kann diesen Umstand dann nicht mehr unterscheiden von dem, dass das PopupMenu komplett verlassen wird - und nur da möchte ich hidePopup() aufrufen.
Mit einem FocusListener kam ich auch nicht weiter, da der Fokus erst verloren geht, wenn man neben der JComboBox ins Fenster klickt - dann aber geht das PopupMenu sowieso zu. Ich möchte aber, dass es schon zu geht, wenn nur der Mauszeiger es verlässt.
Ein Experte, den ich fragte, meinte ich müsse irgendwie an die UIResource ran. Damit meinte er wohl die DefaultComboBoxUI oder? Dort konnte ich aber auch keine Stelle finden, wo ich mich einklinken könnte.
Hat irgendjemand vielleicht eine Idee was man noch probieren könnte?
Ulrich
ich habe das schon in anderen Foren gefragt, aber keiner wusste bisher eine Lösung.
Ich möchte eine JComboBox bauen, die ihr PopupMenu automatisch aufklappt, wenn man mit dem Mauszeiger draufkommt (kein Problem) und automatisch wieder zuklappt, wenn man mit dem Mauszeiger das PopupMenu wieder verlässt (das ist das Problem).
Ersteres ließ sich mit einem MouseListener lösen, den ich auf alle Elemente (Items) des PopupMenus setzte. Bei mouseEntered() öffne ich dann das Popup mit showPopup(), wenn es noch nicht offen ist. Das mouseExited() Event kommt dann allerdings auch bei jedem Element, das man verlässt, also auch dann, wenn man nur durch die Liste der Items scrollt. Ich kann diesen Umstand dann nicht mehr unterscheiden von dem, dass das PopupMenu komplett verlassen wird - und nur da möchte ich hidePopup() aufrufen.
Mit einem FocusListener kam ich auch nicht weiter, da der Fokus erst verloren geht, wenn man neben der JComboBox ins Fenster klickt - dann aber geht das PopupMenu sowieso zu. Ich möchte aber, dass es schon zu geht, wenn nur der Mauszeiger es verlässt.
Ein Experte, den ich fragte, meinte ich müsse irgendwie an die UIResource ran. Damit meinte er wohl die DefaultComboBoxUI oder? Dort konnte ich aber auch keine Stelle finden, wo ich mich einklinken könnte.
Hat irgendjemand vielleicht eine Idee was man noch probieren könnte?
Ulrich