我在为我的数据网格实现双击处理程序时遇到问题。我在堆栈溢出上找到了一个解决方案,我相信它应该可以解决我的问题,但是我无法弄清楚:
1. How exactly do I implement it?
2. What is <T>?
我收到各种我不明白的错误。几乎可以肯定问题出在我添加 CellPreviewHandler (第 6 行)的方式上
错误(第 6 行和第 8 行)
-Type new CellPreviewEvent.Handler(){}必须实现继承的抽象方法CellPreviewEvent.Handler.onCellPreview(CellPreviewEvent)
- new AsynCallBack(String[][]>(){} 类型的 onCellPreview(CellPreviewEvent) 方法必须重写或实现父类(super class)型方法
我的代码:
Public Class DataGrid extends Widget{
Timer singleClickTimer;
int clickCount = 0;
int clickDelay = 300;
myDataTable = new DataGrid<String[]>(result.length, resources, KEY_PROVIDER);
myDataTable.addCellPreviewHandler(new Handler<T>(){
@Override
public void onCellPreview(final CellPreviewEvent<T> event) {
if (Event.getTypeInt(event.getNativeEvent().getType()) == Event.ONMOUSEOVER) {
handleOnMouseOver(event);
} else if (Event.getTypeInt(event.getNativeEvent().getType()) == Event.ONCLICK) {
clickCount++;
if (clickCount == 1) {
singleClickTimer = new Timer() {
@Override
public void run() {
clickCount = 0;
handleOnClick(event);
}
};
singleClickTimer.schedule(clickDelay);
} else if (clickCount == 2) {
singleClickTimer.cancel();
clickCount = 0;
handleOnDblClick(event);
}
}
}
});
private void handleOnMouseOver(CellPreviewEvent<T> event) {
Element cell = event.getNativeEvent().getEventTarget().cast();
GWT.log("mouse over event");
}
private void handleOnClick(CellPreviewEvent<T> event) {
Element cell = event.getNativeEvent().getEventTarget().cast();
GWT.log("click event");
}
private void handleOnDblClick(CellPreviewEvent<T> event) {
Element cell = event.getNativeEvent().getEventTarget().cast();
GWT.log("double click event");
}
最佳答案
这不是一个很好的代码(更好的选择是扩展 DataGrid 类),但如果您不想进行太多更改,只需替换 <T>
与 <String[]>
.
关于java - 双击事件不起作用 - DataGrid - GWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22313414/