2013-08-28 2 views
1

Я добавил событие двойного щелчка для DataGrid, но он работает неправильно. Код обрабатывает один клик, но он не ручка двойной щелчок.Событие Double Click для DataGrid

Пожалуйста, помогите.

private DataGrid<Contract> table = new DataGrid<Contract>(); 
table.addCellPreviewHandler(new Handler<Contract>() { 
    @Override 
    public void onCellPreview(final CellPreviewEvent<Contract> event) { 
    if (BrowserEvents.DBLCLICK.equals(event.getNativeEvent().getType())) { 
     //it doesn't handle 
     Window.alert("Tro-lo-lo"); 
    } 
    if (BrowserEvents.CLICK.equals(event.getNativeEvent().getType())) { 
     //it handles 
     Window.alert("Tru-la-la");   
    } 
    } 
}); 
+1

Попробуйте заменить предупреждения с помощью 'консоли. log'. Предупреждение может блокировать ваш второй клик. –

+0

Я заменил WIndow.alert на журнал, и я увидел, что, когда я делаю двойной щелчок, он обрабатывается как 2 клика. – zigfridus

+0

Пожалуйста, предложите мне что-нибудь. – zigfridus

ответ

1

DataGrid имеет много общего с CellTable. Поэтому решения от this question должны работать для вас тоже:

  • Использования CellPreviewHandler подсчета времени между двумя щелчками
  • Или вы можете добавить DoubleClickHandler с помощью addDomHandler методы
1
dataGrid.addDomHandler(new DoubleClickHandler() { 
    @SuppressWarnings("unchecked") 
    @Override 
    public void onDoubleClick(DoubleClickEvent event) { 
     DataGrid<YourDataProviderType> grid = (DataGrid<YourDataProviderType>) event.getSource(); 
     int row = grid.getKeyboardSelectedRow(); 
     YourDataProviderType item = grid.getVisibleItem(row); 
     Window.alert("Do Something Here"); 
    }  
}, DoubleClickEvent.getType());