Ich versuche einige Maus-Listener zu den Untermenüs/kaskadierenden Menüs der GWT-Menüleiste hinzuzufügen. Leider kann ich nicht direkt auf das Untermenü popuppanel zugreifen - die Methode dafür (getPopup()) ist privat. Und Sie können nicht auf Reflektion zugreifen, da GWT kompiliert.Wie kann ich auf ein GWT-Menü/Untermenü zugreifen?
Das Hinzufügen eines Maus-Listeners zur Hauptmenüleiste (um festzustellen, ob sich die Maus innerhalb der Grenzen der Menüleiste befindet) war einfach und schön. Aber ich kann keine Möglichkeit finden, einen Maus-Listener hinzuzufügen, um zu erkennen, wenn sich die Maus in einem der kaskadierenden Untermenüs befindet.
Was ich tue, ist dies:
com.google.gwt.user.client.ui.MenuBar myMainBar = new MenuBar();
myMainBar.addDomHandler(menuHoverOutHandler, MouseOutEvent.getType());
myMainBar.addDomHandler(menuHoverOverHandler, MouseOverEvent.getType());
Diese für die eigentliche GWT MenuBar funktioniert gut. Wenn ich die Maus einstecke, löst das mouseOverEvent aus. Wenn ich die Maustaste loslasse, wird das MouseOutEvent ausgelöst.
Das Problem ist, dass, wenn ich ein Untermenü aus der Hauptmenüleiste öffne, das Mouse in diesem Menü auch das MouseOutEvent auslösen wird. Ich brauche es nicht, um das zu tun.
Wenn ich Untermenü sage, meine ich so etwas wie die hier zu sehen diejenigen:
http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/MenuBar.html
So lange, wie ich in dem ‚main‘ Bar bin, den Style, Obst Listen und Laufzeit, die Maus Ereignisse erkennen dies.
Aber wenn ich auf das Untermenü, fett, kursiv, mehr, Dropdown-Menü, glaube, die Maus Ereignisse glauben, ich habe die Menüleiste vollständig verlassen. Ich brauche einen Weg, um festzustellen, ob sich die Maus in einem dieser Untermenüs befindet. (Oder, dass ein Untermenü dieser Hauptmenüleiste ist irgendwo offen)
Sie können nicht einfach tun
myMainBar.getPopup()
und fügen Zuhörer zu dem resultierenden PopupPanel als getPopup privat ist. Ich suche nach einer anderen Möglichkeit, um zu MenuBar.popup
Es scheint, gibt es keine Methode zu sagen, ob eines der Untermenüs geöffnet ist, als auch, das ist ein bisschen verwirrend für mich. Es scheint einen frustrierenden Mangel an Möglichkeiten zu geben, mit diesen Untermenüs zu interagieren, und ich frage mich, ob mir etwas fehlt.
Wie kann ich auf Ihren Code zugreifen? :) Kannst du bitte ein Stück Code teilen, der darüber erzählt, was du tust? – Braj
Ich habe einen Code hinzugefügt, der zeigt, was ich mache, und einige zusätzliche Erklärungen. Vielen Dank für einen Blick! – user2197116
Hast du es geschafft, das zu lösen? Ich stehe gerade vor genau diesem Problem ... – Sleeper9