我创建了一个基本的CellTable并用一些数据填充了它。现在,我想向每一行添加一个clickHandler,但是我不确定如何执行此操作。我已经为整个表格创建了一个clickEvent,但是我希望每一行都有一个。

    table.sinkEvents(Event.ONCLICK);
    table.setTitle("Click me");
    table.setSize("600px", "600px");
    table.addDomHandler(new ClickHandler()
    {
        @Override
        public void onClick(ClickEvent event)
        {
            Window.alert("You clicked!" +);

        }
    }, ClickEvent.getType());

我可以做类似的事情来为每一行添加clickEvent吗?

最佳答案

CellTable内置了对处理单击事件的支持。您可以添加一个CellPreviewHandler,单击某行后,该boolean isClick = "click".equals(event.getNativeEvent().getType())将被调用。它将在事件中接收许多项目,例如 native 事件,单元格和数据行值。因为它不仅触发点击事件,所以您需要检查点击事件是否被触发。只需测试传递的事件:doSelection

另一个选择是扩展 protected 方法KeyboardSelectionPolicy,但是不建议使用它,并且您还需要确保已设置正确的KeyboardSelectionPolicy来确保单击完成后被调用。关于后者,请参见ojit_code接口(interface)的JavaDoc中。

10-02 04:58