我有一个水平滚动条控制一个大面板(宽度非常大,高度非常小,因此是水平面板)。
我想要滚动条的开始(当旋钮位于最左侧时)不要从它正在滚动的面板的开始处开始,而是在我指定的特定位置。滚动条的末尾(当旋钮位于最右侧时)相同。
我发现滚动条总是绑定到它滚动的面板,我无法弄清楚如何改变它的行为。
修改
举个例子,想象一下普通的网页:当页面顶部的滚动条旋钮也在顶部。在底部时,滚动条旋钮位于底部。我想为内容定义新的限制,这样当滚动条旋钮到达顶部或底部时,页面显示我定义的限制,而不是真实的顶部和底部。
答案 0 :(得分:3)
如How to Use Scroll Panes所示,您可以使用组件的scrollRectToVisible()
方法滚动到任意Rectangle
。有一个例子here。
附录:作为Container
,JPanel
即使具有相当多的嵌套内容,也是相当可替代的。在给定级别交换内容的一种可靠方法是CardLayout
,here,here和here。
答案 1 :(得分:3)
我使用JScrollbar方法setValues()
解决了这个问题,它允许我同时设置 滚动条的最大值,最小值,值和范围。通过将最大值和最小值设置为我想要的值,滚动条的行为与我想要的一样。
问题在于我只设置了最大值和最小值(setMaximum
,setMinimum
),并且由于模型中存在严格的策略 minimum< = value< =值+范围< =最大,该策略不起作用。
答案 2 :(得分:2)
是否可以将大面板保留为后备存储,并将感兴趣的区域复制到实际在滚动窗格中实现的面板中。这样您就不必对抗滚动窗格的行为。