我有一个显示一些数据的单元格表。对于每一行,我想要有两列包含编辑/删除按钮。单击每个按钮时,它应该能够通知监听器单击了哪个按钮(并且最好还能够传入与该行关联的对象)。
我该怎么做?具体来说,我知道如何渲染按钮,但是如何处理点击事件并传入用户点击编辑或删除的对象?
答案 0 :(得分:1)
这是标准方法:
myTable.addCellPreviewHandler(new Handler<MyObject>() {
@Override
public void onCellPreview(CellPreviewEvent<MyObject> event) {
if ("click".equals(event.getNativeEvent().getType())) {
if (event.getColumn() == 0 || event.getColumn() == 1) {
MyObject object = event.getValue();
Window.alert("Column clicked: " + event.getColumn());
}
}
}
});
这是一个更有效的解决方案,因为您只有一个处理程序附加到表,而不是尝试将处理程序附加到每行中的每个按钮。
答案 1 :(得分:0)
我认为你可以通过细胞表中的所有行进行预测(我从未使用过celltable) 然后,您可以将自己的ClickHandler添加到Button。 这样的事情(未经测试):
final int row = myrow; // add the row value or a object identifier or similar
Button delete_button = new Button("delete");
delete_button.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
// Insert your delete funciton
delete(row);
}
});
您提到了一个Listener,Listener被折旧,而是使用Handler。