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);
}
}