将clickHandler添加到GWT中CellTable中的行



我已经创建了一个基本的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()) .

另一个选项是扩展受保护的方法doSelection,但它已被弃用,并且在您还需要确保您有正确的KeyboardSelectionPolicy设置,以确保在单击完成时调用它。后者参见接口KeyboardSelectionPolicy的JavaDoc。

另一种选择单元格的方法是使用NoSelectionModel并将其添加到表中:

//EDIT: this is a field, not a local variable
TheCellObject clickedObject; //the object selected by selectionModel
final NoSelectionModel<TheCellObject> selectionModel = new NoSelectionModel<TheCellObject>();
    selectionModel.addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
                @Override
                public void onSelectionChange(SelectionChangeEvent event) {
                    clickedObject = selectionModel.getLastSelectedObject();
                }
            });
cellTable.setSelectionModel(selectionModel); //add selection model to your celltable

相关内容

  • 没有找到相关文章

最新更新