Я вижу способ JScrollPane.setWheelScrollingEnabled(boolean)
включить или отключить прокрутку колеса мыши. Но есть ли способ отрегулировать скорость прокрутки? На мой взгляд, это до смешного медленно. Независимо от размера окна, прокрутка составляет около трех пикселей за щелчок. Я бы хотел, чтобы это было намного больше.
Любые идеи?
java
swing
scroll
jscrollpane
mousewheel
Эрик Робертсон
источник
источник
Ответы:
Вы можете попробовать это:
myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);
источник
Один из способов - установить единичное приращение полосы прокрутки на большее число:
scrollPane.getVerticalScrollBar().setUnitIncrement(20);
источник
Если вы хотите установить количество прокрутки колеса мыши независимо от единицы полосы прокрутки, вы можете использовать контроллер колеса мыши .
источник
Вы можете сделать это, установив приращение единицы для 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);
источник
Для более точного управления прокручиваемый компонент может реализовать интерфейс Scrollable. Это позволяет динамически рассчитывать размер блока прокрутки (кнопки со стрелками и клавиши со стрелками) и размер блока прокрутки (колесо мыши).
Как использовать области прокрутки
источник
Вы также можете использовать это.
SwingUtil.setScrollUnitIncrement(yourScrollPane);
источник
Мое решение для ускорения прокрутки:
Добавить параметр полосы прокрутки:
scrollPane.getVerticalScrollBar (). putClientProperty ("JScrollBar.fastWheelScrolling", истина);
Реализуйте прослушиватель колеса (в компоненте внутри 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 необходимо: иначе количество прокручиваемых строк будет ограничено размером экрана.
источник