2012-10-07 21 views
0

我想在GWT中爲FlexTable添加雙擊處理程序。雙擊處理程序可以在GWT 2.3中彈性

我用下面的代碼:

flexTable.addDoubleClickHandler(new DoubleClickHandler() { 

       @Override 
       public void onDoubleClick(DoubleClickEvent event) { 

       } 
    }); 

但我怎樣才能得到行索引。

請給我建議。

回答

5

令人遺憾的是,沒有內置的方法從FlexTable中的雙擊事件中檢索單元格。它可以在幾行中實現。這是我做到的。在DoubleClickHandler

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

然後調用getCellForEvent()來檢索單擊的單元格:

創建FlexTable的子類,用下面的代碼

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構造函數。

+0

@David ...謝謝你救了我的時間.... –