1

是否有关于 GWT 中所有处理程序及其相应容器的概述?每当我尝试向容器添加处理程序时,我必须检查处理程序是否触发事件(JavaDoc 没有提供有关此的有用信息)。例如一个 ResizeHandler:

       SplitLayoutPanel splitLayoutPanel = new SplitLayoutPanel() {
            @Override
            public void onResize() {
                super.onResize();
                System.out.println("onResize");
            }           
        };

        splitLayoutPanel.addHandler(new ResizeHandler() {

            @Override
            public void onResize(ResizeEvent event) {

                System.out.println("resize");

            }
        }, ResizeEvent.getType());

覆盖 onResize() 方法(1. 示例)会提供信息,如果拆分器发生更改,但如果我添加 ResizeHandler(2. 示例),我不会收到任何 onResize 方法的调用。我不明白为什么,也没有找到为什么这个容器中不允许处理程序的文档。

我搜索所有可用处理程序的概述,以及它们可能的容器和事件,它们何时被触发。

4

2 回答 2

1

通常会有更具体的addHandler方法。例如,ButtonaddClickHandler(ClickHandler). 定义该方法的接口是HasClickHandlers,例如,您可以留意它。

如果事件没有它自己的addXyzHandler方法,它可能不会得到很好的支持。在这种情况下,通常很容易将小部件子类化并自己添加对该处理程序的支持。

于 2012-07-09T18:28:32.307 回答
1

如果您在 Widget 上使用 addHandler() 添加处理程序,则必须确保底层 DOM 元素可以捕获匹配事件。如果是,您还必须告诉您的小部件使用

void com.google.gwt.user.client.ui.Widget.sinkEvents(int eventBitsToAdd)

其中 eventBitsToAdd 是来自 com.google.gwt.user.client.Event 的常量。本机尚不支持 AFAIK ONRESIZE 事件。所以正如我昨天所说,你必须实现你的鼠标处理程序和手势,或者覆盖一个滑块;-)

于 2012-07-10T09:40:47.257 回答