双击处理程序以在GWT 2.3中进行flextable

Tus*_*rao 0 gwt double-click flextable

我想在GWT中为FlexTable添加双击处理程序.

我使用下面的代码:

 flexTable.addDoubleClickHandler(new DoubleClickHandler() {

                @Override
                public void onDoubleClick(DoubleClickEvent event) {

                }
    });
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能获得行索引.

请建议我.

Dav*_*que 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在DoubleClickHandler中调用getCellForEvent()来检索单击的单元格:

flexTable.addDoubleClickHandler(new DoubleClickHandler() {
    @Override
    public void onDoubleClick(DoubleClickEvent event) {
        Cell cell = flexTable.getCellForEvent(event);
        GWT.log("Row index: " + cell.getRowIndex());
    }
});
Run Code Online (Sandbox Code Playgroud)

实现细节:方法getCellForEvent()是类HTMLTable(FlexTable的父类)中具有相同名称的方法的副本,除了它具有不同的参数签名.MyCell类是一种解决方法,可以调用受保护的Cell构造函数.