Events 当滚动条出现时,如何捕获事件?

Events 当滚动条出现时,如何捕获事件?,events,gwt,Events,Gwt,我有一个GWT滚动面板,其overflow-y设置为auto。面板的滚动条出现或消失时是否会触发事件?不幸的是,在元素中添加或删除滚动条时不会触发事件。然而,推出自己的产品并不难: public class MyScrollPanel extends ScrollPanel { boolean horizontal = false; boolean vertical = false; public native int getScrollHeight() /*-{ retu

我有一个GWT
滚动面板
,其
overflow-y
设置为
auto
。面板的滚动条出现或消失时是否会触发事件?

不幸的是,在元素中添加或删除滚动条时不会触发事件。然而,推出自己的产品并不难:

public class MyScrollPanel extends ScrollPanel {
  boolean horizontal = false;
  boolean vertical = false;

  public native int getScrollHeight() /*-{
    return this.@com.mypackage.MyScrollPanel::getElement()().scrollHeight;
  }-*/;

  public native int getScrollWidth() /*-{
    return this.@com.mypackage.MyScrollPanel::getElement()().scrollWidth;
  }-*/;

  private boolean hasHorizontalScrollbar() {
    return getElement().getClientWidth() < getScrollWidth();
  }

  private boolean hasVerticalScrollbar() {
    return getElement().getClientHeight() < getScrollHeight();
  }

  public void onLoad() {
    new Timer() {
      @Override
      public void run() {
        boolean scrollersChanged = false;

        if (hasHorizontalScrollbar() != horizontal) {
          horizontal = !horizontal;
          scrollersChanged = true;
        }

        if (hasVerticalScrollbar() != vertical) {
          vertical = !vertical;
          scrollersChanged = true;
        }

        if (scrollersChanged) {
          // Fire event or call onResize()
        }
      }
    }.scheduleRepeating(500);
  }
}
公共类MyScrollPanel扩展ScrollPanel{
布尔水平=假;
布尔垂直=假;
公共本机int getScrollHeight()/*-{
返回此值。@com.mypackage.MyScrollPanel::getElement()().scrollHeight;
}-*/;
公共本机int getScrollWidth()/*-{
返回此值。@com.mypackage.MyScrollPanel::getElement()().scrollWidth;
}-*/;
专用布尔值hasHorizontalScrollbar(){
返回getElement().getClientWidth()