답변:
이것을 시도 할 수 있습니다.
myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);
스크롤바 단위 amout에 관계없이 마우스 휠 스크롤 양을 설정하려면 마우스 휠 컨트롤러를 사용할 수 있습니다 .
빠른 검색으로이 페이지 가 표시되었습니다 . 마우스 휠 사용자를 위해 JScrollPane 스크롤 속도를 높이는 방법 . 스크롤 증가분은 JScrollBar.setUnitIncrement
스크롤 창이 아니라 스크롤 막대 자체 ( ) 의 속성입니다 .
보다 정확한 제어를 위해 스크롤되는 구성 요소는 Scrollable 인터페이스를 구현할 수 있습니다. 이를 통해 스크롤 장치 크기 (화살표 버튼 및 화살표 키)와 스크롤 블록 크기 (마우스 휠)를 동적으로 계산할 수 있습니다.
이것을 사용할 수도 있습니다.
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의 증가가 필요합니다. 그렇지 않으면 스크롤되는 줄의 수가 화면 크기로 제한됩니다.