2017-08-17 52 views
1

我有一个包含onClickonDoubleClick处理程序的元素。我需要为每个方法调用不同的方法,但我无法做到这一点。GWT对特定元素使用DoubleClickHandler和ClickHandler

有什么方法可用?

代码:

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"); 
    } 
}); 

回答

2

在你的代码中,ClickHandler和​​3210都将被上双击解雇。您需要区分“单击”和“双击第一次点击”。以下是您可以考虑的代码,它为ClickHandler添加一个计时器来检测它是“单击”还是“双击第一次点击”。

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"); 
});