Bonjour,
J'essaye de faire un petit test de drag'n'drop d'un JLabel sur un JPanel.
J'ai donc ajouté un MouseMotionListener à mon JLabel, mais lorsque je déplace ce dernier, bizarrement, une seule image sur deux du JLabel est bonne au niveau des coordonnées (l'autre se trouve en bas à droite).
Voici les positions successives de mon JLabel lorsque je le bouge :
java.awt.Point[x=450,y=394]
java.awt.Point[x=250,y=248]
java.awt.Point[x=428,y=370]
java.awt.Point[x=236,y=230]
java.awt.Point[x=414,y=358]
java.awt.Point[x=224,y=220]
Je ne vois pourtant pas ce qui cloche dans mon mouseDragged :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public void mouseDragged(MouseEvent e) { Component source = (Component) e.getSource(); // mon JLabel, donc Point fLocation = f.getLocation(); // location de la frame sur l'écran int xos = e.getXOnScreen(); int yos = e.getYOnScreen(); source.setLocation(xos - fLocation.x - 4 + e.getX(), yos - fLocation.y - 24 + e.getY()); // 4 et 24 sont la différence entre la frame et le JPanel dp.repaint(); // apparemment inutile }
Qu'est-ce que j'ai oublié de prendre en compte dans mon calcul ? Quelqu'un a une idée ?
Merci d'avance !
Partager