java - poner - ¿Cómo puedo acelerar la velocidad de desplazamiento en un JScrollPane cuando uso la rueda del mouse?
scrollbar java eclipse (8)
Veo el método JScrollPane.setWheelScrollingEnabled(boolean)
para habilitar o deshabilitar el desplazamiento de la rueda del mouse. Sin embargo, ¿hay alguna manera de ajustar la velocidad del desplazamiento? Es, en mi opinión, ridículamente lento. No importa qué tamaño haga la ventana, el desplazamiento es de aproximadamente tres píxeles por clic. Me gustaría que fuera mucho más que eso.
¿Algunas ideas?
Estaba tratando de encontrar un método mejor para leer 32000 líneas en mi ScrollPane
prueba esto
scrollPane.getVerticalScrollBar().setUnitIncrement(100); scrollPane.getViewport().putClientProperty("EnableWindowBlit", Boolean.TRUE); scrollPane.getViewport().setScrollMode(JViewport.BACKINGSTORE_SCROLL_MODE);
Mi solución para acelerar el desplazamiento:
Agregar el parámetro de la barra de desplazamiento:
scrollPane.getVerticalScrollBar (). putClientProperty ("JScrollBar.fastWheelScrolling", verdadero);
Implemente un detector de rueda (en el componente dentro de 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); }
El aumento de WheelRotation es necesario: de lo contrario, el número de líneas desplazadas estará limitado al tamaño de la pantalla.
Puede hacer esto configurando el incremento de la unidad para una barra de desplazamiento. Mira el ejemplo.
yourScrollPane.getVerticalScrollBar().setUnitIncrement(16);
Puedes intentar esto:
myJScrollPane.getVerticalScrollBar().setUnitIncrement(16);
Si desea establecer la cantidad de desplazamiento de rueda del mouse independientemente de la unidad de barra de desplazamiento, puede usar el controlador de la rueda del mouse .
También puedes usar esto.
SwingUtil.setScrollUnitIncrement(yourScrollPane);
Una búsqueda rápida abrió esta página: Cómo aumentar la velocidad de desplazamiento JScrollPane para usuarios de mousewheel . Resulta que el incremento de desplazamiento es una propiedad de la propia barra de desplazamiento ( JScrollBar.setUnitIncrement
) y no del panel de desplazamiento.
Una forma sería establecer el incremento de la unidad de la barra de desplazamiento a un número mayor:
scrollPane.getVerticalScrollBar().setUnitIncrement(20);