如何在使用鼠标滚轮时加快JScrollPane中的滚动速度?

我看到方法JScrollPane.setWheelScrollingEnabled(boolean)来启用或禁用鼠标滚轮滚动。 有什么办法可以调整滚动的速度吗? 在我看来,这是可笑的缓慢。 无论我制作窗口的大小,滚动大约是每个点击三个像素。 我希望它远不止于此。

有任何想法吗?

你可以试试这个:

 myJScrollPane.getVerticalScrollBar().setUnitIncrement(16); 

一种方法是将滚动条的单位增量设置为更大的数字:

 scrollPane.getVerticalScrollBar().setUnitIncrement(20); 

如果您想设置滚动条单元的鼠标滚轮滚动量,您可以使用鼠标滚轮控制器 。

您可以通过设置ScrollBar的单位增量来完成此操作。 看例子。

 yourScrollPane.getVerticalScrollBar().setUnitIncrement(16); 

快速search提出了这个页面: 如何增加鼠标滚轮用户的JScrollPane滚动速度 。 事实certificate,滚动增量是滚动条本身( JScrollBar.setUnitIncrement )的属性,而不是滚动窗格。

我试图find一个更好的方法来阅读我的ScrollPane中的32000行

尝试这个

scrollPane.getVerticalScrollBar().setUnitIncrement(100); scrollPane.getViewport().putClientProperty("EnableWindowBlit", Boolean.TRUE); scrollPane.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);

你也可以使用这个。

SwingUtil.setScrollUnitIncrement(yourScrollPane);

我加速滚动的解决scheme:

  1. 添加滚动条的参数:

    scrollPane.getVerticalScrollBar()。putClientProperty(“JScrollBar.fastWheelScrolling”,true);

  2. 实现一个车轮监听器(在jViewport中的组件上):

     public void mouseWheelMoved(MouseWheelEvent e) { boolean isCtrl = (e.getModifiersEx() & MouseWheelEvent.CTRL_DOWN_MASK) != 0; boolean isShift = (e.getModifiersEx() & MouseWheelEvent.SHIFT_DOWN_MASK) != 0; MouseWheelEvent eventToDispatch = e; if (isCtrl || isShift) { int amountMulti = 1; int rotMulti = 1; if (isCtrl) { amountMulti *= 10; if (isShift) { amountMulti *= 5; rotMulti *= 2; } } int mod = e.getModifiers() & ~InputEvent.CTRL_MASK & ~InputEvent.SHIFT_MASK; int modEx = e.getModifiersEx() & ~MouseWheelEvent.CTRL_DOWN_MASK & ~MouseWheelEvent.SHIFT_DOWN_MASK; eventToDispatch = new MouseWheelEvent(this, e.getID(), e.getWhen() , mod | modEx, e.getX(), e.getY() , e.getXOnScreen(), e.getYOnScreen(), e.getClickCount(), e.isPopupTrigger() , e.getScrollType(), e.getScrollAmount()*amountMulti, e.getWheelRotation()*rotMulti , e.getPreciseWheelRotation()*amountMulti*rotMulti); } getParent().dispatchEvent(eventToDispatch); } 

    wheelRotation的增加是必须的:否则滚动的行数将被限制到屏幕的大小。