Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3045 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Java Swing] Problème avec drag'n'drop

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java Swing] Problème avec drag'n'drop

n°1951755
zzzer
Posté le 19-12-2009 à 16:11:52  profilanswer
 

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 :
  1. public void mouseDragged(MouseEvent e) {
  2.         Component source = (Component) e.getSource(); // mon JLabel, donc
  3.         Point fLocation = f.getLocation(); // location de la frame sur l'écran
  4.         int xos = e.getXOnScreen();
  5.         int yos = e.getYOnScreen();
  6.         source.setLocation(xos - fLocation.x - 4 + e.getX(),
  7.                            yos - fLocation.y - 24 + e.getY()); // 4 et 24 représentent la différence de coordonnées entre la frame et le JPanel
  8.         dp.repaint(); // apparemment inutile
  9. }


 
 
 
 
Quelqu'un a une idée ?
 
Merci d'avance ! ;)

mood
Publicité
Posté le 19-12-2009 à 16:11:52  profilanswer
 

n°1951800
cbeyls
Hail to the King, Baby
Posté le 20-12-2009 à 03:25:57  profilanswer
 

Pourquoi pas juste:
 

Code :
  1. source.setLocation(e.getX(), e.getY());


 
?

n°1951820
zzzer
Posté le 20-12-2009 à 11:46:56  profilanswer
 

cbeyls a écrit :

Pourquoi pas juste:
 

Code :
  1. source.setLocation(e.getX(), e.getY());


 
?


 
Non, car je veux en fait tenir compte de l'endroit du JLabel où l'utilisateur a cliqué.
Par exemple, s'il clique dans le quart inférieur droit du JLabel, le comportement ne devra pas être le même que s'il clique dans le quart supérieur gauche, car setLocation() positionne l'élément avec son coin supérieur gauche...

n°1951905
cbeyls
Hail to the King, Baby
Posté le 20-12-2009 à 21:17:52  profilanswer
 

D'accord, tu devrais donc mesurer le décalage entre le bord du JLabel et le curseur au moment où tu enfonces le bouton et l'additionner à chaque fois.

n°1951921
zzzer
Posté le 20-12-2009 à 23:05:53  profilanswer
 

cbeyls a écrit :

D'accord, tu devrais donc mesurer le décalage entre le bord du JLabel et le curseur au moment où tu enfonces le bouton et l'additionner à chaque fois.


 
Cette différence est justement représentée par e.getX() et e.getY().
Ce qui marche à moitié, car une image sur deux est juste...

n°1952042
zzzer
Posté le 21-12-2009 à 12:46:52  profilanswer
 

Problème résolu grâce à

Code :
  1. class DragHandler extends MouseAdapter{
  2. //We save the "press" point in "mousePressed", so we can translate the
  3. //source location in "mouseDragged" relatively to the "press" point:
  4.     private Point press;
  5.     @Override
  6.     public void mousePressed(final MouseEvent e) {
  7.         press = e.getPoint();
  8.     }
  9.     @Override
  10.     public void mouseDragged(final MouseEvent e) {
  11.         Component source = (Component) e.getSource();
  12.         Point location = source.getLocation();
  13.         location.translate(e.getX() - press.x, e.getY() - press.y);
  14.         source.setLocation(location);
  15.     }
  16. }


Merci à uhrand!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Java Swing] Problème avec drag'n'drop

 

Sujets relatifs
Problème pour utiliser "MAX"Problème de validation W3C (script pris pour du HTML)
Aide applet java niveau débutantProblème de configuration MySQL sur Django
probleme avec dreamweaver en mode affichage creéationNotice Index : je n'arrive pas à résoudre le probleme
PHP SQL probleme ORDER BY , GROUP BY...probleme affichage suite a une requete
probleme de gravure 
Plus de sujets relatifs à : [Java Swing] Problème avec drag'n'drop


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR