Как перехватить событие, когда появляется полоса прокрутки? - PullRequest
1 голос
/ 14 июня 2011

У меня есть GWT ScrollPanel, для которого overflow-y установлено на auto.Есть ли событие, которое вызывается, когда полоса прокрутки панели появляется или исчезает?

1 Ответ

0 голосов
/ 24 августа 2011

К сожалению, событие не запускается, когда полосы прокрутки добавляются или удаляются из элемента.Это не сложно, однако, бросить свой собственный:

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);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...