2017-08-17 5 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"); 
}); 
関連する問題