在滚动内容的中间创建java滚动条

时间:2012-01-31 19:33:57

标签: java swing scrollbar awt panel

我有一个水平滚动条控制一个大面板(宽度非常大,高度非常小,因此是水平面板)。

我想要滚动条的开始(当旋钮位于最左侧时)不要从它正在滚动的面板的开始处开始,而是在我指定的特定位置。滚动条的末尾(当旋钮位于最右侧时)相同。

我发现滚动条总是绑定到它滚动的面板,我无法弄清楚如何改变它的行为。

修改

举个例子,想象一下普通的网页:当页面顶部的滚动条旋钮也在顶部。在底部时,滚动条旋钮位于底部。我想为内容定义新的限制,这样当滚动条旋钮到达顶部或底部时,页面显示我定义的限制,而不是真实的顶部和底部。

3 个答案:

答案 0 :(得分:3)

How to Use Scroll Panes所示,您可以使用组件的scrollRectToVisible()方法滚动到任意Rectangle。有一个例子here

附录:作为ContainerJPanel即使具有相当多的嵌套内容,也是相当可替代的。在给定级别交换内容的一种可靠方法是CardLayouthereherehere

答案 1 :(得分:3)

我使用JScrollbar方法setValues()解决了这个问题,它允许我同时设置 滚动条的最大值,最小值,值和范围。通过将最大值和最小值设置为我想要的值,滚动条的行为与我想要的一样。

问题在于我只设置了最大值和最小值(setMaximumsetMinimum),并且由于模型中存在严格的策略 minimum< = value< =值+范围< =最大,该策略不起作用。

答案 2 :(得分:2)

是否可以将大面板保留为后备存储,并将感兴趣的区域复制到实际在滚动窗格中实现的面板中。这样您就不必对抗滚动窗格的行为。