簡體   English   中英

將clickHandler添加到GWT中的CellTable中的行?

[英]Adding clickHandler to row in CellTable in GWT?

我創建了一個基本的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 ,在單擊一行時將調用其中的一個。 它將在事件中接收許多項,如本機事件,單元格和數據行值。 因為它不僅會觸發點擊事件,還需要檢查是否觸發了click事件。 只需測試傳遞的事件: 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM