如何使无限JScrollPane的?(How do make an infinite jscroll

2019-09-21 05:50发布

我之前已经实现拖动滚动,但什么是去有关创建无限滚动窗格中的最佳方式是什么? 当然不会有任何滚动,我将实现拖动滚动。

我所试图做的是一个无限的表面实现动态加载。

编辑

当然,它不会其实是无限的。 我问哪里可以找到答案。

Answer 1:

你可以使用JScrollPane.getViewport()来获得JViewport和添加ChangeListener它。 该JViewport当大小,或者更重要的位置已经改变会提醒你的听众。 如果位置发生了变化接近边缘JScrollPane ,那么你可以调整视口(需要无视大小触发更改事件)。



Answer 2:

你可以做到以下几点:

AdjustmentClass adj = new AdjustmentClass();
scrollPane.getHorizontalScrollBar().addAdjustmentListener(adj);
scrollPane.getVerticalScrollBar().addAdjustmentListener(adj);

而在你AdjustmentClass做到以下几点:

public class AdjustmentClass implements AdjustmentListener {
    public void adjustmentValueChanged(AdjustmentEvent adjustmentEvent) {
        // Implement your custom code here
    }
}

要获得事件的方向做:

adjustmentEvent.getAdjustable().getOrientation();

你会发现在方向常量:

AdjustmentEvent.UNIT_INCREMENT
AdjustmentEvent.BLOCK_INCREMENT

等等 等等

要检查用户拖动滚动条旋钮做:

adjustmentEvent.getValueIsAdjusting()

还有我数越多,检查API的更多信息,如果您需要。

编码愉快!



Answer 3:

在一个有点延迟,我会在这里发布答案,我介绍了一个相关的问题 :

你可以做的,就是用GIMP有一个滚动区域,当您移动,可扩展的方式 - 捕捉鼠标中键的点击标记初步打算到移动视。 然后,当鼠标被拖动(按钮被点击时)由初始点击和当前位置之间的偏移量移动JScrollPane的视口。 如果我们搬到画布的边界之外,那么你应该简单地扩大画布。

当画布是滚动窗格中显示的组件。 需要注意的是移动视口时,你可能要做到以下几点:

  • 如果以前和当前视口的最小区域内显示(即会已采取小部件,如果它是扁平的,而不是滚动窗格的实际面积),什么都不做
  • 如果当前区域不是“最小区域”内,则调整内部插件同时含有所需的视口和原窗口小部件(处理原插件与左上角在矩形的矩形的大小(0 ,0))。 请注意,您需要更改控件的滚动位置。


文章来源: How do make an infinite jscrollpane?