我想在GWT中为FlexTable添加双击处理程序。
我使用下面的代码:
flexTable.addDoubleClickHandler(new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
}
});
但我怎样才能获得行索引。
请建议我。
答案 0 :(得分:5)
遗憾的是,没有内置方法可以从FlexTable中的双击事件中检索单元格。它可以在几行中实现。这就是我做到的。
使用以下代码创建FlexTable的子类:
public class DoubleClickTable extends FlexTable {
class MyCell extends Cell {
protected MyCell(int rowIndex, int cellIndex) {
super(rowIndex, cellIndex);
}
}
public Cell getCellForEvent(MouseEvent<? extends EventHandler> event) {
Element td = getEventTargetCell(Event.as(event.getNativeEvent()));
if (td == null) {
return null;
}
int row = TableRowElement.as(td.getParentElement()).getSectionRowIndex();
int column = TableCellElement.as(td).getCellIndex();
return new MyCell(row, column);
}
}
然后在DoubleClickHandler中调用getCellForEvent()来检索单击的单元格:
flexTable.addDoubleClickHandler(new DoubleClickHandler() {
@Override
public void onDoubleClick(DoubleClickEvent event) {
Cell cell = flexTable.getCellForEvent(event);
GWT.log("Row index: " + cell.getRowIndex());
}
});
实现细节:方法getCellForEvent()是类HTMLTable(FlexTable的父类)中具有相同名称的方法的副本,不同之处在于它具有不同的参数签名。 MyCell类是一种解决方法,可以调用受保护的Cell构造函数。