2

我以前实现过拖动滚动,但是创建无限滚动窗格的最佳方法是什么?当然不会有任何滚动条,我将实现拖动滚动。

我想做的是在无限表面上实现动态加载。

编辑

当然,它实际上不会是无限的。我在问如何伪造它。

4

3 回答 3

1

您可以使用它JScrollPane.getViewport()来获取JViewport并添加一个ChangeListener。当JViewport大小或更重要的是位置发生变化时,它将提醒您的听众。如果位置已更改接近边缘,则JScrollPane可以调整视口的大小(您需要忽略大小触发的更改事件)。

于 2009-07-29T00:50:44.577 回答
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 以获取更多信息。

快乐编码!

于 2011-05-19T12:22:04.013 回答
0

稍等片刻,我将在此处发布有关相关问题的答案:

你可以做的是使用 GIMP 的滚动区域,它可以随着你的移动而扩展——点击鼠标中键来标记移动视口的初始意图。然后,当鼠标被拖动时(单击按钮时),将 jscrollpane 的视口移动初始单击和当前位置之间的偏移量。如果我们移动到画布的边界之外,那么你应该简单地放大画布。

画布是滚动窗格内显示的组件。请注意,在移动视口时,您可能需要执行以下操作:

  • 如果前一个和当前视口在显示的最小区域内(即如果它是平坦的并且不在滚动窗格中,小部件将占据的实际区域),什么也不做
  • 如果当前区域不在“最小区域”内,则将内部小部件调整为包含所需视口和原始小部件的矩形的大小(将原始小部件视为左上角为 (0 ,0))。请注意,您将需要更改小部件的滚动位置。
于 2011-10-21T00:42:34.120 回答