Java JScrollpane:仅按unitIncrement滚动

Java JScrollpane:仅按unitIncrement滚动,java,swing,jscrollpane,Java,Swing,Jscrollpane,我用实现的Scrollable接口和重写的方法getScrollabbleBlockIncrement创建了JPanel。 我将JPanel放入JScrollPane中。 JPanel包含几个高度相同的组件。这个高度是单位增量。 现在,当我单击垂直滚动条上的箭头时,视口按单位增量移动。 但是,当我用鼠标移动旋钮时,视口按像素移动。 如何使视口仅通过unitIncrement移动 更新: 旋钮是滚动条上的中间按钮,在轨道上拖动它。如图所示 我希望视口以任何方式仅通过单位增量移动。当我按下旋钮上的鼠

我用实现的
Scrollable
接口和重写的方法
getScrollabbleBlockIncrement
创建了JPanel。 我将JPanel放入JScrollPane中。 JPanel包含几个高度相同的组件。这个高度是单位增量。 现在,当我单击垂直滚动条上的箭头时,视口按单位增量移动。 但是,当我用鼠标移动旋钮时,视口按像素移动。 如何使视口仅通过unitIncrement移动

更新:
旋钮是滚动条上的中间按钮,在轨道上拖动它。如图所示

我希望视口以任何方式仅通过单位增量移动。当我按下旋钮上的鼠标左键并拖动它时也是如此。示例行为:Eclipse中的intellisense

更新2:
我试过了
myJScrollPane.getVerticalScrollBar().setUnitIncrement(16)
没有得到想要的行为
当我调试代码时,我发现当我拖动旋钮时,参数unitIncrement被丢弃

更新3:

无法使用JScrollPane找到合适的解决方案,并编写了自定义滚动窗格。

只需稍加搜索即可找到问题的答案:

重申一下,您基本上希望修改
JScollPane
上的
JScrollBar

myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);
否则,您将覆盖JScrollPane上的Scolling事件,以便根据正在滚动的窗格传入您想要滚动的数量-这有点混乱。。。所以,如果第一种方法对你有效,那就是我的选择


一句话:问题出在
JScollPane
-不是你的
可滚动的
类。

也可能是See的副本。鼠标旋钮的意思是什么?Lukas Knuth,有用的链接,谢谢。但这不是重复的。垃圾天啊,我读了这篇文章,却没有找到解决办法。请参阅更新。