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