[Java Swing] Problème avec drag'n'drop
zzzer
Messages postés
938
Statut
Membre
-
zzzer Messages postés 938 Statut Membre -
zzzer Messages postés 938 Statut Membre -
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 :
Quelqu'un a une idée ?
Merci d'avance !
--
N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte :
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 :
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
}
Quelqu'un a une idée ?
Merci d'avance !
--
N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte :
Rédiger les messages dans un langage clair sans abréviation, style télégraphique ou mode SMS
Configuration: HP DV5 1123ef 3Go de RAM Core 2 Duo 2GHz NVidia 9600M GT
2 réponses
-
-
Problème résolu avec :
class DragHandler extends MouseAdapter{ //We save the "press" point in "mousePressed", so we can translate the //source location in "mouseDragged" relatively to the "press" point: private Point press; @Override public void mousePressed(final MouseEvent e) { press = e.getPoint(); } @Override public void mouseDragged(final MouseEvent e) { Component source = (Component) e.getSource(); Point location = source.getLocation(); location.translate(e.getX() - press.x, e.getY() - press.y); source.setLocation(location); } }