2017-04-10 42 views
1

鉴于当在JScrollPane一个JTable滚动接近底部

JTable table = new JTable(); 
JScrollPane scrollPane = new ScrollPane(table); 

我要当表滚动接近底部检测(所以新行可以加载并添加)检测。 scrollPane.getViewport().addChangeListener()scrollPane.getVerticalScrollBar().addAdjustmentListener()之间是否有差别?

+0

为你的描述让我承担的结尾,你不要所有的数据加载到表立刻。为什么要这么做? – XtremeBaumer

+0

@XtremeBaumer由于加载数据需要时间,用户应该能够访问初始数据,而无需等到所有数据都可用。例如。所有的数据都是几十年,但用户大多数都在关心过去的几天。 –

回答

2
scrollPane.getVerticalScrollBar().addAdjustmentListener() 

只会触发垂直滚动活动。

scrollPane.getViewport().addChangeListener() 

将触发对视口属性的更改,滚动位置的更改以及对视口容器的更改。

功能为您的目的,都应该工作。

3

胡克的调整侦听器,以垂直滚动条和获取数据时,用户滚动到视图

final JScrollPane scrollPane = new JScrollPane(); 
//Hook up listener to vertical scroll bar 
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener(){ 
    @Override 
    public void adjustmentValueChanged(AdjustmentEvent e) { 
     // Check if user has done dragging the scroll bar 
     if(!e.getValueIsAdjusting()){ 
      JScrollBar scrollBar = (JScrollBar) e.getAdjustable(); 
      int extent = scrollBar.getModel().getExtent(); 
      int maximum = scrollBar.getModel().getMaximum(); 
      if(extent + e.getValue() == maximum){ 
       fetchMoreData(); 
      } 
     } 

    } 
}); 
相关问题