当前位置:  开发笔记 > 编程语言 > 正文

如何在GWT中向Flextable添加行侦听器?

如何解决《如何在GWT中向Flextable添加行侦听器?》经验,为你挑选了2个好方法。

如何将行侦听器添加到特定行或表中的所有行?我需要在行中添加一种"onMouseOver"监听器,这样当你将鼠标悬停在它们上面时,它会改变行的背景颜色,就像getRowFormatter允许你做的那样.



1> 小智..:
// this is click 
final FlexTable myTable = new FlexTable();
myTable.addClickHandler(new ClickHandler() {
    public void onClick(ClickEvent event) {
        Cell cell = myTable.getCellForEvent(event);
        int receiverRowIndex = cell.getRowIndex(); // <- here!
    }
});



2> Seh Hui Leon..:

假设GWT 1.5.3:

点击事件处理

如果您正在使用FlexTable并且想要一个单击事件处理程序,则可以使用FlexTable.addTableListener()并注册自己的处理程序TableListener.该TableListener对象需要实现onCellClicked回调,它将为您提供行号.

其他事件处理(例如HOVER)

如果您需要处理除click(例如,悬停)之外的其他类型的事件,GWT当前没有就绪接口.你自己几乎要自己实现它们.我现在可以想到有两种方法:

    快速而肮脏的方式可能是利用JSNI,它为您提供了一种将Javascript注入GWT代码的方法.在我的代码中,我没有使用太多的JSNI(除了真正难以在纯GWT中编写它的努力方法),所以我不能给你一个例子; 但坦率地说,我不建议这样做,因为它会降低可维护性和可扩展性.

    如果您需要本机GWT接口,则可以创建一个继承HTMLTable或FlexTable的新类.在构造sinkEvents函数中,使用您需要的事件调用该函数.(例如,对于悬停,你可能需要sinkEvents(Event.ONMOUSEOVER)).然后你需要处理鼠标悬停的onBrowserEvent函数.

    代码应如何显示的快速模板:

    import com.google.gwt.user.client.DOM;
    import com.google.gwt.user.client.Event;
    import com.google.gwt.user.client.ui.FlexTable;
    public class FlexTableWithHoverHandler
        extends FlexTable
    {
        public FlexTableWithHoverHandler()
        {
            super();
            sinkEvents(Event.ONMOUSEOVER);
        }
        @Override
        public void onBrowserEvent(Event event)
        {
            switch(DOM.eventGetType(event))
            {
            case Event.ONMOUSEOVER:
                // Mouse over handling code here
                break;
            default:
                break;
            }
        }
    }
    

    学习如何编写代码的最佳方法是查看GWT源代码本身(搜索sinkEvent)并了解如何以GWT方式执行此操作.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有