Sto cercando di aggiungere alcuni ascoltatori del mouse ai sottomenu/menu a cascata del MenuBar di GWT. Purtroppo non riesco ad accedere direttamente al sottomenu popuppanel: il metodo per farlo (getPopup()) è privato. E non puoi accedervi tramite la riflessione a causa del modo in cui compila GWT.Come posso accedere a un pannello popup/sottomenu della barra dei menu di GWT?
L'aggiunta di un listener del mouse alla barra del menu principale (per rilevare quando il mouse si trova all'interno dei limiti della barra dei menu) è stata semplice e intuitiva. Ma non riesco a capire un modo per aggiungere un listener del mouse per dire quando il mouse si trova in uno dei sottomenu a cascata.
Quello che sto facendo è questo:
com.google.gwt.user.client.ui.MenuBar myMainBar = new MenuBar();
myMainBar.addDomHandler(menuHoverOutHandler, MouseOutEvent.getType());
myMainBar.addDomHandler(menuHoverOverHandler, MouseOverEvent.getType());
Questa grande opera per l'attuale GWT MenuBar. Quando topo, il mouseOverEvent si innesca. Quando topo il mouse, si avvia il mouse su EventEut.
Il problema è che se apro un sottomenu dalla barra dei menu principale, il mouse in quel menu attiverà anche MouseOutEvent. Ho bisogno che non lo faccia.
Quando dico sottomenu voglio dire qualcosa di simile a quelli visti qui:
http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/MenuBar.html
Quindi, fintanto che io sono nel bar 'principale' che elenca Stile, frutta, e Termine, il mouse gli eventi lo riconoscono.
Ma se si scende al sottomenu che dice Grassetto, Corsivo, Altro, gli eventi del mouse credono che abbia lasciato completamente la barra dei menu. Ho bisogno di un modo per determinare se il mouse si trova all'interno di uno di questi sottomenu. (O che un sottomenu di questa barra del menu principale è aperto da qualche parte)
Non si può semplicemente fare
myMainBar.getPopup()
e aggiungere gli ascoltatori alla conseguente PopupPanel come getPopup è privato. Sto cercando un altro modo per arrivare a MenuBar.popup
Sembra che non ci sia alcun metodo per sapere se uno dei sottomenu è aperto, il che è un po 'imbarazzante per me. Sembra esserci una frustrante mancanza di capacità di interagire con questi sottomenu, e mi chiedo se mi manca qualcosa.
come posso accedere al codice? :) Per favore puoi condividere qualche pezzo di codice che ti dice cosa stai facendo? – Braj
Ho aggiunto del codice che mostra quello che sto facendo e qualche spiegazione aggiuntiva. Grazie per aver dato un occhiata! – user2197116
Sei riuscito a risolvere questo? Sto affrontando esattamente questo problema al momento ... – Sleeper9