首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单元格上的Cellbrowser单击事件

单元格上的Cellbrowser单击事件
EN

Stack Overflow用户
提问于 2011-04-07 02:11:41
回答 3查看 2.3K关注 0票数 2

我不知道如何在GWT的cell浏览器中的单元格上添加一个单击处理程序。我在StackOverFlow上找到了另一个与我的问题相关的question,但它是用于双击处理程序的。我不知道如何添加一个普通的点击处理程序。

我的目的是当用户单击cell浏览器中的某个单元格时,它会从服务器上下载该子笔记。我已经和onBrowserEvent玩过了,但是我不能让它工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-07 03:04:59

您不能像普通那样添加ClickHandler,因为Cell不是Widget. AbstractCell确实有一些方法可以让您方便地处理事件,但是您必须使用您想要侦听的事件的名称来调用它的构造函数。例如,您可以将"click“传递给单元格的构造函数,覆盖onBrowserEvent,并在那里检查"click”事件。

查看ClickableTextCell的源代码,了解谷歌是如何将点击监听器添加到单元格中的。

票数 2
EN

Stack Overflow用户

发布于 2011-04-07 05:33:05

在你的TreeViewModel中,你给返回的NodeInfo一个SelectionModel。您可以在SelectionModel上侦听SelectionChangeEvent(考虑到您的用例,您可能会使用一个NoSelectionModel,很可能是由需要onclick行为的所有级别共享的一个use )

票数 3
EN

Stack Overflow用户

发布于 2011-04-08 04:14:07

也许这对其他使用GWT的web开发人员也很有趣,所以我是这样做的:

代码语言:javascript
复制
// 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类:

代码语言:javascript
复制
public abstract class ClickCell extends AbstractCell<C> {

    public ClickCell() {
        super("click", "keydown");
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5571018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档