JScrollbar每50像素滚动一次

时间:2012-08-13 14:21:56

标签: java swing jscrollpane jscrollbar

我正在开发一个包含滚动条的程序。 在程序中,我得到了一个500px的可滚动字段,我希望滚动条每50px滚动一次。 所以我得到了10页。 我不希望能够显示50%的页面我只希望能够一次显示1页。 那么如何更改滚动尺寸?

或者有更好的方法来实现这个目标吗?

电贺, 并提前感谢 BRAM

2 个答案:

答案 0 :(得分:4)

您可以使可滚动字段实现Scrollable接口,该接口声明滚动字段将用于决定滚动距离的两种方法,getScrollableUnitIncrement(滚轮,单击滚动箭头)和getScrollableBlockIncrement(点击滚动条的轨道)。

如果你真的只想要50岁,你可以使用

jScrollPane.getVerticalScrollBar().setUnitIncrement(50);
jScrollPane.getVerticalScrollBar().setBlockIncrement(50);

然而,如果用户然后拖动滚动条直到显示半页(我不认为这种行为可以很容易地改变),滚动仍然会跳50像素并显示下一页的一半...如果你实现Scrollable,您可以根据当前可见的内容滚动数量。

答案 1 :(得分:1)

与您JScrollPane

一起试试
scrollPane.getVerticalScrollBar().setUnitIncrement(50);

当您向上/向下滚动JScrollPane按钮时,这会有所帮助,但您可以通过鼠标移动旋钮来显示一半的页面。

作为替代方案,我可以建议用AdjustmentListener观察旋钮位置并手动移动scrollPane值。

scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener()
    {
        public void adjustmentValueChanged(AdjustmentEvent e)
        {
            scrollPane.getVerticalScrollBar().setValue(e.getValue() / 50 * 50);
        }
    });

但我认为这不是个好主意。可能有人会提出更好的方法。