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 ^^
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 ^^
Salut,
Petit début de réponse à ton problème :
J'ai un peu cherché, mais je connaissais déjà les MouseListener qui te permettent de "savoir" ce qui est arrivé à ta souris (comme un clic droit ou gauche ou...) et donc, je me suis dis que tu devais avoir ça aussi pour la roulette... Et là bingo![]()
Il te faut utiliser l'interface MouseWheelListener qui va te renvoyer un MouseWheelEvent (cf doc de Sun: http://java.sun.com/j2se/1.4.2/docs/...lListener.html) et donc, tu pourras connaitre le nombre de "rotation" de ta molette et donc par là même savoir de combien il te faut augmenter l'incrément du scroll..
Si c'est pas très clair, dis moi![]()
Bonne chance
si c'est bon merci ^^ .. je me demandais juste si le sroll Pane n'avais pas une méthode (passer par le listener était ma seconde solution)
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 :
Avec ça, tu avanceras où reculeras beaucoup plus vite lors de l'action sur la molette de la souris.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } } });
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.
Là, ça fait tout de suite plus clean
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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...
Partager