2013-05-14 11 views
11

Voglio aggiungere il gestore sull'elemento del pulsante e l'ho implementato come segue. Per favore aiutami a risolvere l'errore in questo codice. Non voglio aggiungere il gestore direttamente sul widget del pulsante.Gestore su elementi DOM in GWT

 Button button = new Button("Click"); 
     Element buttonElement = button.getElement(); 

     Event.setEventListener(buttonElement, new EventListener() { 

      @Override 
      public void onBrowserEvent(Event event) { 

       String string = event.getType(); 

       if(string.equalsIgnoreCase("click")) { 
        System.out.println("CLICK"); 
       } 
      } 
     }); 

     Event.sinkEvents(buttonElement, Event.ONCLICK); 

risposta

17

Il codice è corretto, è possibile aggiungere widget dopo evento sink. devi aggiungere widget prima dell'evento sink. solo esempio:

Button button=new Button("Click"); 
    Element buttonElement = button.getElement(); 
     RootPanel.get().add(button); 
    Event.sinkEvents(buttonElement, Event.ONCLICK); 
    Event.setEventListener(buttonElement, new EventListener() { 

     @Override 
     public void onBrowserEvent(Event event) { 
      System.out.println("ok"); 
      if(Event.ONCLICK == event.getTypeInt()) { 
       Window.alert("ok"); 
        System.out.println("CLICK"); 
      } 

     } 
    }); 
+0

ma perché è necessario chiamare la funzione sinkEvents in seguito. – Mani

+2

Poiché 'Button' (e la maggior parte dei widget) eseguirà _sink_ un evento solo se esiste un gestore per esso; questo viene fatto automaticamente da 'addDomHandler'. Qui per qualche motivo sconosciuto non vuoi 'addClickHandler', quindi devi chiamare' sinkEvents' da solo. A proposito, perché creare un widget 'Button' se non si utilizzano i suoi eventi? Che ne dite di 'Document.get(). CreateButtonElement()'? –

+0

@ThomasBroyer in realtà volevo rendere le righe di datagrid trascinabili e per quello ottengo riga come elemento e volevo aggiungere gestore su di esso. [http://stackoverflow.com/questions/16536118/make-the-rows-of-the-datagrid-draggable-in-gwt/16538946?noredirect=1#16538946](thread) – Mani

Problemi correlati