Ответ 1
Вы можете попробовать следующее:
myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);
Я вижу метод JScrollPane.setWheelScrollingEnabled(boolean)
для включения или отключения прокрутки колесика мыши. Есть ли способ настроить скорость прокрутки? Это, на мой взгляд, смехотворно медленно. Независимо от того, какой размер я делаю в окне, прокрутка составляет около трех пикселей за клик. Я бы хотел, чтобы это было намного больше.
Любые идеи?
Вы можете попробовать следующее:
myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);
Один из способов - установить приращение устройства в полосе прокрутки на большее число:
scrollPane.getVerticalScrollBar().setUnitIncrement(20);
Если вы хотите установить количество прокрутки колесика мыши, независимо от диапазона полосы прокрутки, вы можете использовать Mouse Wheel Controller.
Вы можете сделать это, установив приращение устройства для ScrollBar. См. Пример.
yourScrollPane.getVerticalScrollBar().setUnitIncrement(16);
Быстрый поиск поднял эту страницу: Как увеличить скорость прокрутки JScrollPane для пользователей колесиков мыши. Оказывается, что приращение прокрутки является свойством самой полосы прокрутки (JScrollBar.setUnitIncrement
), а не панель прокрутки.
Я пытался найти лучший метод для чтения через 32000 строк в ScrollPane
попробуйте это
scrollPane.getVerticalScrollBar().setUnitIncrement(100);
scrollPane.getViewport().putClientProperty("EnableWindowBlit", Boolean.TRUE);
scrollPane.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);
Вы также можете использовать это.
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: в противном случае количество прокрученных строк будет ограничено размером экрана.