2016-03-31 14 views
0

Haben Sie Hinweise, warum der Event-Handler nicht feuert?
Vielleicht bekomme ich etwas falsch mit Ereignis sprudeln und gwt?GWT Event-Handler nicht feuern

public class MyNavBarUI extends Composite 
{ 
     @UiTemplate("MyNavBarUI.ui.xml") 
     interface MyUiBinder extends UiBinder<Widget, MyNavBarUI> 
     {} 

     @UiField 
     HTML html; 
     @UiField 
     HTMLPanel htmlp; 

     private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class); 

     public MyNavBarUI() 
     { 
     // sets listBox 
     initWidget(uiBinder.createAndBindUi(this)); 

     html.setHTML(
         "<div id = \"ul_ud1\"> Home </div> " 
         + "<div id = \"ul_ud2\"> News </div>" 
         + "<div id = \"ul_ud3\"> Contact </div>" 
         + "<div id = \"ul_ud4\"> About </div>" 
        ); 
     } 

     @Override 
     public void onAttach() 
     { 
     super.onAttach(); 

     Event.setEventListener(htmlp.getElementById("ul_ud1"), new EventListener() { 

      @Override 
      public void onBrowserEvent(Event event) { 

       Window.alert(""+event.toString());  
      } 
     }); 

     } 
} 

Antwort

0

Sie müssen nur Ereignisse sinken:

Event.sinkEvents(htmlp.getElementById("ul_ud1"), Event.ONCLICK); 

Sie können mehrere Ereignisse sinken, zum Beispiel

Event.sinkEvents(htmlp.getElementById("ul_ud1"), Event.ONCLICK | Event.ONMOUSEOVER); 

Dann wird in der Eventlistener Sie die Art des Ereignisses überprüfen:

public void onBrowserEvent(Event event) { 
    switch(event.getTypeInt()) { 
     case Event.ONCLICK: 
      Window.alert("Click"); 
      break; 
     case Event.ONMOUSEOVER: 
      Window.alert("Mouse over"); 
      break; 
    } 
}