代码之家  ›  专栏  ›  技术社区  ›  Pyrolistical

如何创建无限jscrollpane?

  •  2
  • Pyrolistical  · 技术社区  · 15 年前

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

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

    编辑

    当然,这并不是无限的。我在问如何伪装。

    3 回复  |  直到 15 年前
        1
  •  1
  •   akf    15 年前

    你可以用 JScrollPane.getViewport() 为了得到 JViewport 并添加 ChangeListener 为了它。这个 JViewport公司 会提醒你的听众当大小或更重要的位置已经改变。如果位置在靠近 JScrollPane 然后可以调整视口的大小(需要忽略大小触发的更改事件)。

        2
  •  1
  •   Bones    13 年前

    您可以执行以下操作:

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

    在调整类中,请执行以下操作:

    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获取更多信息。

    快乐编码!

        3
  •  0
  •   Community CDub    7 年前

    稍等片刻,我会把我的答案贴在这里 related question :

    你能做的,就是用GIMP有一个可以扩展的滚动区域的方式 当你移动时-点击鼠标中键进行标记 移动视口的初始意图。然后,当老鼠 拖动(单击按钮时)移动 jscrollpane,按初始单击和当前单击之间的偏移量 位置。如果我们离开了画布的边界,那么你 只需放大画布。

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

    • 如果上一个和当前的视口位于显示的最小区域内(即,如果窗口小部件是平的,而不是在滚动窗格中,则该窗口小部件将占用的实际区域),则不执行任何操作
    • 如果当前区域不在“最小区域”内,则将内部小部件的大小调整为包含所需视口和原始小部件的矩形的大小(将原始小部件视为左上角位于(0,0)的矩形)。注意,您需要更改小部件的滚动位置。