JPopupMenu per linker Maustaste öffnen

Status
Nicht offen für weitere Antworten.

moormaster

Top Contributor
Hi,

ich habe einen JToggleButton, welcher ein JPopupMenu öffnen soll. Wenn ich das per setComponentPopupMenu(...) zuweise, dann geht das JPopupMenu wie gewünscht auf undzwar ohne diesen "Java Applet Window" Warnhinweis.

Ich hätte es aber gern, dass das Menü beim Linksklick und nicht bei einem Rechtsklick auf den JToggleButton aufgeht. Dazu habe ich versucht, das JPopupmenu einfach mit seiner show-Methode anzuzeigen, was dann aber seltsamer Weise immer nur mit Warnhinweis "Java Applet Window" geöffnet wird.

Am besten wäre, wenn man im JToggleButton selbst irgendwo festlegen könnte, wann es sein per setComponentPopupMenu zugewiesenes Menü öffnet, denn da geht das PopupMenu ja immer ohne diesen Warnhinweis auf.
 
Ich habe hier ein Applet, das nicht signiert ist, Popups öffnet, und kein "Java Applet Window" angibt. ???:L

Übergibst du bei "show" dem Popup auch eine Parent-Component, die angezeigt wird?
 
Beni hat gesagt.:
Ich habe hier ein Applet, das nicht signiert ist, Popups öffnet, und kein "Java Applet Window" angibt. ???:L

Öffnet es PopMenu's oder JPopupMenu's? Bei PopupMenu werden ja die nativen Kontextmenüs benutzt und dementsprechend wird da auch kein Warnhinweis eingeblendet. Ich würde aber gerne Icons neben den Menüelementen platzieren... somit bin ich an JPopupMenu's gebunden.

Übergibst du bei "show" dem Popup auch eine Parent-Component, die angezeigt wird?

Ja ich übergebe den JToggleButton sowie eine Position, welche sich direkt über dem Button befindet. Das PopupMenu befindet sich sogar komplett innerhalb des Anzeigebereichs des Applets auf dem Monitor (auch wenn es darüber gezeichnet wird... ist ja schliesslich nen Window^^)
 
Hm, ich muss mich leider korrigieren, bei mir erscheint auch der Warnhinweis... aber nur wenn das Menu (ja, ein JPopupMenu) aus dem Applet herausragt.

Wenn es komplett im Applet (bzw, JApplet) ist, gibt es keinen Hinweis. Offenbar wird dann kein Window erzeugt.

Ja sorry, damit erschöpft sich meine nicht eben brauchbare Hilfe...

[edit: wird als Bug aufgeführt]
 
Hast du einen Link zu dem Quelltext des Applets, bei dem der Warnhinweis nicht da ist, wenn das Popup am richtigen Platz sitzt? Vielleicht finde ich dann den Unterschied zu meinem 😀
 
Ich warne dich, es ist nicht gerade wenig Quellcode. Die Klasse "ActionPopup" macht das Menü auf.

Ich kanns mir nicht erklären, ich hab vorhin versucht ein ganz kleines Applet zu schreiben, und da kam der Warnhinweis immer.

P.S. ich habe Java 1.6 verwendet, und als Beweis einen Screenshot in das Zip getan :wink:
 
Thx 😀

Wahrscheinlich wird es als Contextmenü innerhalb des Applets zugelassen, wenn e.isPopupTrigger() true ist. Das wird beim JToggleButton scheinbar nie true, solange ich kein PopupMenu explizit registriert hab mit setComponentPopupMenu... daher öffne ich das Quasi bei jedem Linksklick.

Dein Applet hat ja auch noch ein zweites Window, welches diese Warnung immer enthält; nämlich wenn man versucht das virtuelle Frame irgendwohin zu ziehen.

Wahrscheinlich werd ich mir mein eigenes PopupMenu schreiben müssen, welches nie als Window angelegt wird, sondern immer innerhalb des Applets gezeichnet wird. Zum Glück brauche ich in meinem Applet keine Popups, welche über das Applet hinausreichen müssen ^^
 
So, hab noch ein bisschen rumgespielt... wenn der Parent des Popups in Kind der JRootPanes ist, erscheint der Hinweis nicht. Denn dann kann das Popup im LayeredPane des RootPanes auftauchen - dann ist es kein Window, nur eine ganz normale Component.

Frage: ist dein Togglebutton auch sauber als Kind eines JRootPanes registriert? (z.B. in der init-Methode des Applets über "getContentPane().add( ... )" hinzugefügt worden).
 
Öhm... dann sollte ich vielleicht erstmal ganz sauber ein JApplet nehmen, damit es überhaupt ein contentPane gibt... ^^
 
Hihi mein Applet war ganz schön vermüllt...

Nachdem ich daraus ein JApplet gemacht habe, war das JPopupMenu nur noch dann sichtbar, wenn es sich als Window gezeichnet hat. Sonst wurde es im Applet gezeichnet... nur im Applet habe ich eine Art selbstgebastelte Desktop Komponente, welche aber von einem awt Panel geerbt hat und somit hat dieser dann das PopupMenu immer verdeckt... nach dem das nun auch von einer swing Komponente erbt, funzt es aber 😀

Thx
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben