【问题标题】:JScrollpane: scroll only by unitIncrementJScrollpane:仅按 unitIncrement 滚动
【发布时间】:2012-08-05 19:14:12
【问题描述】:

我创建了 JPanel,实现了 Scrollable 接口和覆盖方法 getScrollableBlockIncrement。 我将 JPanel 放入 JScrollPane 中。 JPanel 包含几个具有相同高度的组件。这个高度就是unitIncrement。 现在,当我单击垂直滚动条上的箭头时,视口按 unitIncrement 移动。 但是,当我用鼠标移动旋钮时,视口会移动像素。 如何使视口仅按unitIncrement移动?

更新:
旋钮是滚动条上的中间按钮,在轨道上,用来拖动它。如图所示How a Scroll Pane Works

我希望视口以任何方式仅按 unitIncrement 移动。此外,当我在旋钮上按下鼠标左键并拖动它时。示例行为:Eclipse 中的智能感知。

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

更新 3:
使用 JScrollPane 找不到合适的解决方案并编写了自定义滚动窗格。

【问题讨论】:

标签: java swing jscrollpane


【解决方案1】:

稍作搜索即可找到您问题的答案:How do I speed up the scroll speed in a JScrollPane when using the mouse wheel?

重申一下,您基本上是想修改JScollPane 上的JScrollBar

myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);

否则,您将不得不覆盖 JScrollPane 上的 Scolling 事件,以根据正在滚动的窗格传递您想要滚动的量 - 这有点混乱......所以如果第一种方法适合您,这就是我想要的。

底线:问题出在JScollPane - 而不是你的Scrollable 班级。

【讨论】:

    猜你喜欢
    • 2011-07-28
    • 2011-06-14
    • 1970-01-01
    • 2018-09-12
    • 2011-05-20
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    相关资源
    最近更新 更多