在CellTable单元格中添加双击事件 - GWT

Dea*_*eam 12 events gwt double-click cell

我无法弄清楚如何将双击事件添加到CellTable的单元格中.

是否可以使用GWT CellTable?

有没有解决方法

谢谢..

顺便说一句,我看过这篇文章,但没有回复...... http://www.devcomments.com/Adding-DoubleClicks-and-OnContextMenu-to-CellTable-at1066168.htm

Chr*_*lli 5

我精心制作了一些符合我需求的东西:

cellTable.addCellPreviewHandler(new Handler<TitoloProxy>() {

           long lastClick=-1000;

           @Override
           public void onCellPreview(CellPreviewEvent<TitoloProxy> event) {
               long clictAt = System.currentTimeMillis();
               GWT.log("clickAt: "+(clictAt));
               GWT.log("lastClick: "+(lastClick));
               if(event.getNativeEvent().getType().contains("click")){
                   GWT.log(""+(clictAt-lastClick));
                   if(clictAt-lastClick < 300) { // dblclick on 2 clicks detected within 300 ms
                       Window.alert("I am a double click crafted event!");

                   }
                   lastClick = System.currentTimeMillis();
               }
           }
       });
Run Code Online (Sandbox Code Playgroud)

  • 可以进行更优雅的事件类型检查,而不是`event.getNativeEvent().getType().contains("click")`.尝试`Event.getTypeInt(event.getNativeEvent().getType())== Event.ONCLICK`,用对应于所需事件的枚举替换`Event.ONCLICK`(用GWT 2.4测试). (2认同)

小智 5

    cellTable.addDomHandler(new DoubleClickHandler() {

        @Override
        public void onDoubleClick(DoubleClickEvent event) {
            Window.alert("That's it!");
        }
    }, DoubleClickEvent.getType());
Run Code Online (Sandbox Code Playgroud)


小智 -1

如果您想要一个文本单元格来支持您自己选择的事件列表,您可以使用:

public class EventfulTextCell extends AbstractSafeHtmlCell`<String`> {

    private static final String[] NO_CONSUMED_EVENTS = null; 

    public EventfulTextCell() {
        this(NO_CONSUMED_EVENTS);
    }

    public EventfulTextCell(String... consumedEvents) {
        super(SimpleSafeHtmlRenderer.getInstance(), consumedEvents);
    }

    @Override
    public void render(Context context, SafeHtml value, SafeHtmlBuilder sb) {
        if (value != null) {
            sb.append(value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你实例化它:

new EventfulTextCell("click", "dblclick")
Run Code Online (Sandbox Code Playgroud)

然后重写 onBrowserEvent() 方法来处理您的事件。