IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SWT/JFace Java Discussion :

[SWT_AWT]SWT_AWT MacOSX/Java7 : problème avec le Drag And Drop


Sujet :

SWT/JFace Java

  1. #1
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut [SWT_AWT]SWT_AWT MacOSX/Java7 : problème avec le Drag And Drop
    Bonjour,

    J'essaye de migrer une application depuis Eclipse 3.5 vers Eclipse 3.8.2, et dans les nombreux problèmes que je rencontre, le drag and drop ne fonctionne pas entre SWT et un composant AWT (un composant basé sur la classe java.awt.Canvas), sur MacOSX, en Java 1.7.

    Le composant AWT_SWT complet ne fonctionnant pas sous cet environnement, j'ai tout d'abord dû l'adapter pour ce faire : j'ai posté la solution dans cette discussion, pour ceux qui veulent en connaître le détail).

    Le Drag And Drop fonctionne par ailleurs sur Windows, en 1.5, 1.6 et 1.7, et sous MacOSX, en 1.5 et 1.6. Le code est inchangé.

    Lors de mon analyse, je vois que l'évènement DragEnter est bien soulevé, mais il est suivi immédiatement de l'évènement DragExit. J'ai essayé d'analyser, tant bien que mal (d'autant plus que je n'ai pas les sources des classes sun), le comportement en mode debug, mais je ne vois rien de particulier qui expliquerait pourquoi aucun des autres évènements n'est produit.

    Merci par avance, pour vos idées, suggestions, ou solution.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    J'ai continué l'analyse du problème, et j'ai fini par m'apercevoir que tous les évènements étaient reçus, mais sur une portion limité du composant AWT, comme s'il était décalé, du moins vers le haut. Si le composant n'a pas une hauteur suffisante, aucun évènement n'est reçu, autre que dragEnter et dragExit. S'il a une hauteur suffisante, il reçoit bien le dragOver et le drop dans une partie limitée située en haut, comme si, pour le drag and drop, le composant n'était pas au même endroit que pour le reste (le canvas s'affiche bien, réagit bien par rapport aux manipulations des ascenseurs du JScrollPane dans lequel il se trouve, au layout de son conteneur, et l'interaction avec la localisation de la souris (le canvas affiche des composants java2D qui réagissent aux actions de la souris) ne subit ni aucun décalage, ni aucun "clipping".

    Le point le plus haut est en 244, alors qu'il devrait être à 0, et si je descends, le dragExit intervient lorsque j'arrive en 376 : or, il s'agit de la hauteur de mon canvas. J'obtiens tout de même un dragExit lorsque j'arrive en haut du composant. Donc en gros, j'ai une zone de drop de 132 pixels de haut, située en y=-244, clippée avec la position réelle du composant. Evidemment les composants Java2D qui sont à l'intérieur du canvas réagissent de manière erratique, car les coordonnées de la souris dans l'évènement sont fausses. Mais ça je pourrais peut être faire un workaround (si le décalage est constant et déterminable). Mais pour la zone non couverte en bas, c'est plus problématique.

    EDIT : en pièce jointe, le snippet pour reproduire le problème
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. problème d'encoding avec un drag-and-drop.
    Par Luke spywoker dans le forum GTK+ avec Python
    Réponses: 1
    Dernier message: 10/09/2014, 17h24
  2. [WD16] Perte d'identifiant dans un arbre avec le drag and drop
    Par Francis D dans le forum WinDev
    Réponses: 0
    Dernier message: 05/04/2011, 11h22
  3. Réponses: 0
    Dernier message: 21/07/2010, 06h37
  4. Problème avec du drag'n'drop de JLabel
    Par zzzer dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 21/12/2009, 23h32
  5. Réponses: 1
    Dernier message: 29/04/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo