【问题标题】:How to capture doubleClickEvent in GWT CellTable如何在 GWT CellTable 中捕获 doubleClickEvent
【发布时间】:2012-10-08 14:56:24
【问题描述】:

我正在尝试让 GWT CellTable 捕获 DoubleClickEvent 类型的事件,但是当在 UI 中单击一行时,CellTable 正确接收 ClickEvent 类型的事件,它看不到任何 @双击行时为 987654326@。

因此,如果我单击 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 但即使在这个案例。

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

【问题讨论】:

  • 这不是重复的,这个问题是关于单个单元格事件处理程序,而不是表处理程序。我在发布我的问题之前阅读了该内容。

标签: gwt double-click celltable


【解决方案1】:
       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());

您必须将 T 替换为您的 "ServiceTypeUI" 。选择的值将是从用户那里选择的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多