我不知道如何在GWT的cell浏览器中的单元格上添加一个单击处理程序。我在StackOverFlow上找到了另一个与我的问题相关的question,但它是用于双击处理程序的。我不知道如何添加一个普通的点击处理程序。
我的目的是当用户单击cell浏览器中的某个单元格时,它会从服务器上下载该子笔记。我已经和onBrowserEvent玩过了,但是我不能让它工作。
发布于 2011-04-07 03:04:59
您不能像普通那样添加ClickHandler,因为Cell不是Widget. AbstractCell确实有一些方法可以让您方便地处理事件,但是您必须使用您想要侦听的事件的名称来调用它的构造函数。例如,您可以将"click“传递给单元格的构造函数,覆盖onBrowserEvent,并在那里检查"click”事件。
查看ClickableTextCell的源代码,了解谷歌是如何将点击监听器添加到单元格中的。
发布于 2011-04-07 05:33:05
在你的TreeViewModel中,你给返回的NodeInfo一个SelectionModel。您可以在SelectionModel上侦听SelectionChangeEvent(考虑到您的用例,您可能会使用一个NoSelectionModel,很可能是由需要onclick行为的所有级别共享的一个use )
发布于 2011-04-08 04:14:07
也许这对其他使用GWT的web开发人员也很有趣,所以我是这样做的:
// Create a clickable cell.
Cell<C> cell = new ClickCell() {
@Override
public void render(Context context, C value, SafeHtmlBuilder sb) {
if (value != null) {
sb.appendEscaped(value.getName());
}
}
@Override
public void onBrowserEvent(Context context, Element parent, C value,
NativeEvent event, ValueUpdater<C> valueUpdater) {
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if ("click".equals(event.getType())) {
onEnterKeyDown(context, parent, value, event, valueUpdater);
}
}
@Override
protected void onEnterKeyDown(Context context, Element parent, C value,
NativeEvent event, ValueUpdater<C> valueUpdater) {
if (valueUpdater != null) {
valueUpdater.update(value);
}
}
}; 下面是扩展AbstractCell类的ClickCell类:
public abstract class ClickCell extends AbstractCell<C> {
public ClickCell() {
super("click", "keydown");
}
}https://stackoverflow.com/questions/5571018
复制相似问题