GWT 仅为 table 行添加双击处理程序,而不是 header

GWT add double click handler only for table rows, not header

我们通过扩展 com.google.gwt.user.client.ui.Composite 在我们的应用程序中实现了 GWT 自定义 table 小部件。此 table 上有一个双击处理程序,它会打开一个弹出窗口来编辑所选记录。

// 'table' is our implementation

final NoSelectionModel<OurCustomDTOClass> editSelectedRowModel = new NoSelectionModel<OurCustomDTOClass>();
table.getTable().setSelectionModel(editSelectedRowModel, DefaultSelectionEventManager.createBlacklistManager(0));
table.addDomHandler(new DoubleClickHandler() {
        @Override
        public void onDoubleClick(final DoubleClickEvent event) {
            // code to open the popup to edit the record        
            // this popup must be opened only if the user selects the rows and NOT the header   
        }
}, DoubleClickEvent.getType());

仅供参考,table 被绘制为 th(对于 table headers)和 tr(对于 table 行)。

我们需要做的是避免用户双击 table header 时的双击操作。我搜索了 SO 和其他参考资料,但还没有成功。

如有任何有用的指点,我们将不胜感激。谢谢。

您可以尝试检查事件的目标:

Element e = Element.as(event.getNativeEvent().getEventTarget());
if (e.getTagName().toLowerCase().equals("td")) {
    // do something
}

或者您可以将小部件拆分为两个单独的小部件 - 一个用于 header,另一个用于 table body。