[英]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.