2017-08-17 2 views
1

J'ai un élément avec les deux gestionnaires onClick et onDoubleClick. Je dois appeler différentes méthodes pour chacun, mais je ne suis pas capable de faire cela.GWT Utilisation de DoubleClickHandler et ClickHandler pour l'élément particulier

Y at-il un moyen disponible?

code:

docksWidget.addClickHandler(new ClickHandler() {       
    @Override 
    public void onClick(ClickEvent arg0) { 
     // TODO Auto-generated method stub 
     Window.alert("Single Click"); 
    } 
}); 
docksWidget.addDoubleClickHandler(new DoubleClickHandler() { 
    @Override 
    public void onDoubleClick(DoubleClickEvent arg0) { 
     // TODO Auto-generated method stub 
     Window.alert("Double Click"); 
    } 
}); 

Répondre

2

Dans votre code, le ClickHandler et DoubleClickHandler seront tous deux tiré sur un double-clic. Vous devrez différencier le «clic unique» et le «premier clic d'un double clic». Vous trouverez ci-dessous le code que vous pouvez utiliser pour ajouter un temporisateur à ClickHandler pour détecter s'il s'agit du "simple clic" ou du "premier clic d'un double clic".

final int[] clicks = {0}; //we need to make this final because it's used in lambda 

testAnchor.addClickHandler(event -> { 
    clicks[0]++; 
    Scheduler.get().scheduleFixedPeriod(() -> 
    { 
     if (clicks[0] == 1) 
     { 
      //put your single click action here 
      Window.alert("single click"); 
     } 
     clicks[0] = 0; 
     return false; 
    }, 500); //The default double click timeframe in Microsoft Windows is 500ms 
}); 
testAnchor.addDoubleClickHandler(event -> { 
    //put your double click action here 
    Window.alert("double click"); 
});