[JScrollPane]Accelerer le scroll via molette de la souris
Bonjour,
J'ai chercher mais je n'ai que trouvé pour le scroll via la barre et ca s'est deja fait .
Donc : Comment modifier l'increment de scroll via la molette ?
Marci d'avance ^^
Faire descendre ou monter d'une page un JScrollPane avec molette de la souris
Si tu veux faire que le pas de la molette soit augmenté de façon à faire avancer (ou reculer) d'une page le scrollBar du JScrollPane à l'aide de la molette (un peu comme si on faisait à chaque cran de molette l'appel à PgUp ou PgDown), voici le code dont tu as besoin :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
JScrollPane scrollPane = new JScrollPane() ;
scrollPane.setViewPortView(myJTable); // JTable associée au scrollPane
myJTable.addMouseWheelListener(new MouseWheelListener() {
public void mouseWheelMoved(MouseWheelEvent event) {
final JScrollBar scrollBar = scrollPane.getVerticalScrollBar();
final int rotation = event.getWheelRotation();
if (scrollBar!=null) {
scrollBar.setValue(scrollBar.getValue()
+ (scrollBar.getBlockIncrement(rotation)*rotation)
- (scrollBar.getBlockIncrement()*5*rotation));
// dispatchEvent(event); pas nécessaire
}
}
}); |
Avec ça, tu avanceras où reculeras beaucoup plus vite lors de l'action sur la molette de la souris.
Pour être plus objet, il est tout simplement possible d'étendre la classe JScrollPane en y implémentant MouseWheelListener et d'abonner le JTable à cette implémentation.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
public class MyScrollPane extends JScrollPane implements MouseWheelListener {
// constructeur
public MyScrollPane(final JTable myTable) {
setViewportView(myTable);
setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
myJTable.addMouseWheelListener(this);
}
// from MouseWheelListener
public void mouseWheelMoved(MouseWheelEvent event) {
final JScrollBar scrollBar = getVerticalScrollBar();
final int rotation = event.getWheelRotation();
if (scrollBar!=null) {
scrollBar.setValue(scrollBar.getValue()
+ (scrollBar.getBlockIncrement(rotation)*rotation));
}
}
} // end of class |
Là, ça fait tout de suite plus clean :yaisse2: ...