我以前实现过拖动滚动,但是创建无限滚动窗格的最佳方法是什么?当然不会有任何滚动条,我将实现拖动滚动。
我想做的是在无限表面上实现动态加载。
编辑
当然,它实际上不会是无限的。我在问如何伪造它。
我以前实现过拖动滚动,但是创建无限滚动窗格的最佳方法是什么?当然不会有任何滚动条,我将实现拖动滚动。
我想做的是在无限表面上实现动态加载。
编辑
当然,它实际上不会是无限的。我在问如何伪造它。
您可以使用它JScrollPane.getViewport()
来获取JViewport
并添加一个ChangeListener
。当JViewport
大小或更重要的是位置发生变化时,它将提醒您的听众。如果位置已更改接近边缘,则JScrollPane
可以调整视口的大小(您需要忽略大小触发的更改事件)。
您可以执行以下操作:
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 以获取更多信息。
快乐编码!
稍等片刻,我将在此处发布有关相关问题的答案:
你可以做的是使用 GIMP 的滚动区域,它可以随着你的移动而扩展——点击鼠标中键来标记移动视口的初始意图。然后,当鼠标被拖动时(单击按钮时),将 jscrollpane 的视口移动初始单击和当前位置之间的偏移量。如果我们移动到画布的边界之外,那么你应该简单地放大画布。
画布是滚动窗格内显示的组件。请注意,在移动视口时,您可能需要执行以下操作: