2012-08-13 60 views
1

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

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

映入眼帘, 而在此先感谢 布拉姆

回答

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); 
     } 
    }); 

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

4

您可以进行滚动领域实现Scrollable接口,其中声明了两个方法滚动领域将用来决定它能走多远滚动,getScrollableUnitIncrement(滚动轮,点击滚动箭头)和getScrollableBlockIncrement(点击滚动条的轨道) 。

如果你真的永远只能将希望它是50,你可以用

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

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

+0

Thx为此,因为行为不能改变,很容易可以使用卡片布局和滚动卡片? 我知道它可以用按钮来改变卡片,所以这可以用滚动条来完成吗? – Bram 2012-08-13 14:44:49

+1

@Bram从来没有亲自做过,但似乎有可能。您不想使用滚动窗格,而是使用'AdjustmentListener'监听的独立'JScrollBar'。当收听者被通知时,找出合适的卡片并显示出来。当然,你必须配置滚动条才能知道你有多少张卡。 – 2012-08-13 15:05:57

+0

Thx会尝试:) – Bram 2012-08-13 15:08:10