我创建了一个基本的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中。