que poner docs java swing scroll jscrollpane mousewheel

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:

  1. Agregar el parámetro de la barra de desplazamiento:

    scrollPane.getVerticalScrollBar (). putClientProperty ("JScrollBar.fastWheelScrolling", verdadero);

  2. 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 forma sería establecer el incremento de la unidad de la barra de desplazamiento a un número mayor:

scrollPane.getVerticalScrollBar().setUnitIncrement(20);