2009-06-25 19 views

回答

6

我至少能夠確認GWT 1.5以下工作:

final VerticalPanel vp = new VerticalPanel(); 
for (int i = 0; i < 40; i++) { 
    vp.add(new HTML("Oh oh")); 
} 
final HTML f = new HTML("END"); 
vp.add(f); 

final ScrollPanel panel = new ScrollPanel(vp); 
panel.setHeight("20em"); 
panel.addScrollListener(new ScrollListener() { 

    HTML end = f; 
    public void onScroll(Widget widget, int scrollLeft, int scrollTop) { 

     int finalPos = end.getAbsoluteTop() + end.getOffsetHeight(); 
     int panelPos = panel.getAbsoluteTop() + panel.getOffsetHeight(); 
     if (finalPos == panelPos) { 
      end = new HTML("MORE !!"); 
      vp.add(end); 
     } 

    } 
}); 

注有趣的位位置的計算。

8

嘗試是這樣的:

public static class InfiniteScrollPanel implements ScrollHandler { 
    String text = "Lorem ipsum dolor sit amet, consectetuer..."; 
    ScrollPanel panel = new ScrollPanel(new HTML(text)); 
    int height = 200; 
    int width = 200; 

    public InfiniteScrollPanel() { 
     panel.setHeight(height); 
     panel.setWidth(width); 
     panel.addScrollHandler(this); 
    } 
    public void onScroll(ScrollEvent event) { 
     if (panel.getScrollPosition == height) { 
      panel.add(new HTML(text)); 
     } 
    } 
} 

這段代碼的含義:它會創建一個ScrollPanel,並增加了一個的scrollHandler它。在ScrollHandler中,scrollHight與面板的高度進行比較,然後將另一個孩子添加到面板。

我還沒有測試過,因爲我在上網本上編寫了這個版本,並且沒有IDE。

+0

感謝克里斯 - 我猜的訣竅是到現在的高度和什麼時候觸發東西被添加到面板等。 – 2009-06-28 01:08:26