2012-10-18 39 views
2

我试图让DoubleClickEvent类型的GWT CellTable抓事件,但同时CellTable当点击在UI连续正确接收ClickEvent类型的事件,它没有看到任何DoubleClickEvent当该行被双击。如何捕获doubleClickEvent在GWT CellTable

所以,如果我在UI单击某一行,处理程序申报ClickEvent正确触发,但如果我双击声明的处理程序DoubleClickEvent触发,来代替。

我做得不对或CellTable本身不能处理DoubleClickEvent呢? 在后一种情况下,这可能是捕捉双击表中的一个好办法吗?

下面,我CellTable声明代码:

CellTable<ServiceTypeUI> contentTable = new CellTable<ServiceTypeUI>(10, style); 
contentTable.setSelectionModel(new SingleSelectionModel<ServiceTypeUI>()); 
contentTable.addHandler(new DoubleClickHandler() { // HANDLER NOT CORRECTLY TRIGGERED 
    @Override 
    @SuppressWarnings("unchecked") 
    public void onDoubleClick(DoubleClickEvent event) { 
     presenter.doubleClickHandler(event); 
    } 

}, DoubleClickEvent.getType()); 
contentTable.addHandler(new ClickHandler() { // HANDLER CORRECTLY TRIGGERED 
    @Override 
    @SuppressWarnings("unchecked") 
    public void onClick(ClickEvent event) { 
     presenter.clickHandler(event); 
    } 

}, ClickEvent.getType()); 

我也试着删除ClickEvent处理程序声明和SelectionModel声明,以避免任何的捕捉DoubleClickEvent事件,并把它作为一个ClickEvent但DoubleClickHandler尚未即使在这种情况下触发。

CellTable<ServiceTypeUI> contentTable = new CellTable<ServiceTypeUI>(10, style); 
contentTable.addHandler(new DoubleClickHandler() { // HANDLER NOT CORRECTLY TRIGGERED 
    @Override 
    @SuppressWarnings("unchecked") 
    public void onDoubleClick(DoubleClickEvent event) { 
     presenter.doubleClickHandler(event); 
    } 

}, DoubleClickEvent.getType()); 
+0

重复的http://stackoverflow.com/questions/4815596/adding-double-click-event-in-celltable-cell-gwt –

+0

它不是重复的,这个问题是关于单细胞事件处理程序,而不是表处理程序。在发布我的问题之前,我阅读了该文章 – avalori

回答

9
 SingleSelectionModel<T> selectionModel 
    = new SingleSelectionModel<T>(); 

    cellTable.setSelectionModel(selectionModel); 
    cellTable.addDomHandler(new DoubleClickHandler() { 

     @Override 
     public void onDoubleClick(final DoubleClickEvent event) { 
      T selected = selectionModel 
        .getSelectedObject(); 
      if (selected != null) { 
       //DO YOUR STUFF 

            } 

     } 
    }, 
    DoubleClickEvent.getType()); 

你必须与你的 “ServiceTypeUI”,以取代吨。所选择的值将是其是来自于用户所选择的对象。