Answers:
您可以尝试以下方法:
myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);
如果要设置独立于滚动条单位的鼠标滚轮滚动量,则可以使用鼠标滚轮控制器。
快速搜索显示了此页:如何为鼠标滚轮用户提高JScrollPane滚动速度。事实证明,滚动增量是滚动条本身(JScrollBar.setUnitIncrement
)的属性,而不是滚动窗格的属性。
您也可以使用它。
SwingUtil.setScrollUnitIncrement(yourScrollPane);
我加快滚动的解决方案:
添加滚动条的参数:
scrollPane.getVerticalScrollBar()。putClientProperty(“ JScrollBar.fastWheelScrolling”,true);
实现一个车轮监听器(在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是必要的:否则,滚动行的数量将受限于屏幕的大小。