2011-06-14 6 views

Répondre

0

Malheureusement, aucun événement n'est déclenché lorsque des barres de défilement sont ajoutées ou supprimées d'un élément. Il n'est pas difficile, cependant, de rouler le vôtre:

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

    public native int getScrollHeight() /*-{ 
    return [email protected]::getElement()().scrollHeight; 
    }-*/; 

    public native int getScrollWidth() /*-{ 
    return [email protected]::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); 
    } 
} 
Questions connexes