2009-06-25 12 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

はこのような何かを試してみてください(理想的にGWT 1.6と1.5のために何かをしたいと思います):

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では、スクロール高さがパネルの高さと比較され、パネルに別の子が追加されます。

私はネットブックでこれを書いているので、テストしていないし、IDEを持っていない。

+0

おかげさまでクリス - 私はこのトリックは今、高さに、いつ物事をパネルに追加するのかと推測しています。 –

+0

高さがわからない場合は、getOffsetHeightを呼び出すことができます装飾(ボーダー、マージン、パディング) –

関連する問題