Déplacer JPanel selon déplacement de la souris
Bonjour,
je crée un petit widget pour lequel j'ai enlevé la barre supérieure du JFrame. L'utilisateur doit cependant tout de même pouvoir déplacer le widget et pour cela, je voudrais pouvoir déplacer le JPanel principal en suivant le pointeur de la souris.
J'ai donc affecté un MouseMotionListener et un MouseListener à mon JPanel et je calcule la différence entre deux positions du curseur de la souris pour l'ajouter à la position de la fenêtre.
Mon problème est que la fenêtre ne suit pas correctement le pointeur de la souris et qu'elle semble même "sauter" pour rattraper le curseur. Effet plutôt sympa mais ça n'est pas ce que je recherche :roll:
Voilà le code des Listeners :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| mainPane.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
if(SwingUtilities.isLeftMouseButton(e)){
oldX = e.getX();
oldY = e.getY();
}
}
});
mainPane.addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
windowX += (e.getX()-oldX);
windowY += (e.getY()-oldY);
setLocation(windowX, windowY);
oldX = e.getX();
oldY = e.getY();
}
}); |
Peut-être y a-t-il une meilleure solution, plus simple, pour faire ce que je veux faire ?