如何知道用户是否已在SWT滚动栏中滚动到最后?

时间:2014-11-09 18:03:37

标签: java swt

我们遇到一种情况,我们需要在用户向下滚动以查看滚动条中的最后一个元素时触发服务器调用以获取下一个100条记录。请分享任何指示。

1 个答案:

答案 0 :(得分:3)

ScrollBar在更改时会触发SelectionEvent。通过聆听此事件并将滚动条位置+拇指大小与最大大小进行比较,您应该能够判断它何时滚动到最后。

final ScrollBar scrollBar = scrolledComposite.getHorizontalBar();
scrollBar.addSelectionListener( new SelectionAdapter() {
  public void widgetSelected( SelectionEvent event ) {
    if( scrollBar.getSelection() + scrollbar.getThumb() == scrollBar.getMaximum() ) {
      // spawn thread to fetch further data
    }
  }
} );

您可能希望优化条件,以便在到达滚动条结束之前获取新数据,例如:

if( scrollBar.getSelection() + scrollbar.getThumb() > scrollBar.getMaximum() - scrolledComposite.getClientArea().y ) {
  ...
}