2012-08-05 41 views
0

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

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

我希望视口只能由unitIncrement以任何方式移动。另外当我按下旋钮上的鼠标左键并拖动它。示例行为:Eclipse中的intellisense。

更新2:
我试图 myJScrollPane.getVerticalScrollBar().setUnitIncrement(16); 并没有得到期望的行为。
当我调试代码时,我发现当我拖动旋钮时,参数unitIncrement被丢弃。

更新3:
找不到与JScrollPane的合适的解决方案和定制写道滚动窗格。

+4

可能的重复[如何使JScrollPane滚动每行鼠标滚轮1行?](http://stackoverflow.com/questions/11397581/how-to-make-jscrollpane-scroll-1-line-per-mouse -wheel-step) – 2012-08-05 19:30:08

+0

参见[*实现滚动精明的客户端*](http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html#scrollable)。 – trashgod 2012-08-05 20:28:57

+0

用鼠标_作为鼠标_是否意味着[滚轮](http://en.wikipedia.org/wiki/Scroll_wheel)? – trashgod 2012-08-05 20:31:11

回答

0

的回答你的问题可以用一个小的搜索努力找到:How do I speed up the scroll speed in a JScrollPane when using the mouse wheel?

要重申的是,你基本上要修改的JScrollBarJScollPane

myJScrollPane.getVerticalScrollBar().setUnitIncrement(16); 

否则,你留下了覆盖在JScrollPane中的Scolling事件的还是要根据多数民众赞成被滚动的窗格中滚动的数量通过 - 这是一个有点乱......所以,如果第一种方式为你工作,这是我一起去的。

底线:问题与JScollPane - 不是你的Scrollable类。