确定窗口小部件是否在GWT中的视口中显示

时间:2012-03-03 05:56:15

标签: gwt widget viewport

是否可以确定视口中是否显示特定小部件?

一旦我的listwidget中的最后一个窗口小部件显示给用户,我想开始加载更多数据。我想我可以处理滚动事件和每个事件检查是否显示最后一个窗口小部件以及rpc的激活以获取更多数据。

BR

2 个答案:

答案 0 :(得分:1)

这是执行Job的GWT方法(它是从JQuery解决方案here翻译而来)。

/**
 * @param widget the widget to check
 * @return true if the widget is in the visible part of the page
 */
private boolean isScrolledIntoView(Widget widget) {
    if (widget != null) {
        int docViewTop = Window.getScrollTop();
        int docViewBottom = docViewTop + Window.getClientHeight();
        int elemTop = widget.getAbsoluteTop();
        int elemBottom = elemTop + widget.getOffsetHeight();
        return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
    }       
    return false;
}

答案 1 :(得分:0)

查看GWT Showcase's CellList sample中的ShowMorePagerPanel

您可以使用窗口小部件的getElement()的{​​{1}}和滚动元素的getOffsetTop()(相当于getScrollTop()的{​​{1}})来计算窗口小部件目前在视图中(请注意元素“getVerticalScrollPosition()”,您可能希望将滚动元素的CSS ScrollPanel设置为getOffsetParent()以使其成为小部件的偏移父