我正在开发一个包含滚动条的程序。在程序中,我得到了一个 500 像素的可滚动字段,我希望滚动条每 50 像素滚动一次。所以我得到了10页。我不想能够显示 50% 的页面我只想能够一次显示 1 页。那么如何更改滚动尺寸?
还是有更好的方法来实现这一点?
问候,并提前感谢布拉姆
我正在开发一个包含滚动条的程序。在程序中,我得到了一个 500 像素的可滚动字段,我希望滚动条每 50 像素滚动一次。所以我得到了10页。我不想能够显示 50% 的页面我只想能够一次显示 1 页。那么如何更改滚动尺寸?
还是有更好的方法来实现这一点?
问候,并提前感谢布拉姆
您可以使可滚动字段实现Scrollable
接口,该接口声明了滚动字段将用来决定滚动多远的两种方法,getScrollableUnitIncrement
(滚轮,单击滚动箭头)和getScrollableBlockIncrement
(单击滚动条的轨迹)。
如果你真的只希望它是 50,你可以使用
jScrollPane.getVerticalScrollBar().setUnitIncrement(50);
jScrollPane.getVerticalScrollBar().setBlockIncrement(50);
但是,如果用户然后拖动滚动条直到显示半页(我认为这种行为不能轻易改变),滚动仍然会跳转 50 像素并显示下一页的一半......如果你实现Scrollable
,你可以基于当前可见的滚动量。
和你一起试试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);
}
});
但我认为这不是一个好主意。可能有人会提出更好的方法。