之前我已经实现了拖动滚动,但是创建无限滚动窗格的最佳方法是什么?当然不会有任何滚动条,我会实现拖动滚动。
我要做的是在无限的表面上实现动态加载。
修改
当然它实际上并不是无限的。我在问如何假装它。
答案 0 :(得分:1)
您可以使用JScrollPane.getViewport()
获取JViewport
并为其添加ChangeListener
。 JViewport
会在尺寸或更重要的位置发生变化时提醒听众。如果位置已接近JScrollPane
的边缘,则可以调整视口大小(您将需要忽略大小触发的更改事件)。
答案 1 :(得分:1)
您可以执行以下操作:
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以获取更多信息。
快乐的编码!
答案 2 :(得分:0)
稍微延迟一下,我会在related question发布答案:
你可以做的是使用GIMP有一个可以扩展的滚动区域的方式 当你移动时 - 抓住鼠标中键的点击进行标记 移动视口的初始意图。然后,当鼠标是 拖动(单击按钮时)移动视口 jscrollpane由初始点击和当前之间的偏移量组成 位置。如果我们超出了画布的范围,那么你 应该只是放大画布。
画布是滚动窗格内显示的组件。请注意,移动视口时,您可能需要执行以下操作: