2017-10-14 6 views
0

ContexteEst-il possible de vérifier si la source/cible est la même pour une opération glisser-déposer (en java)?

Je veux créer un listbox pour Matlab dans lequel je peux réorganiser les éléments et déposer des fichiers depuis une fenêtre de l'explorateur en utilisant uniquement les gestes de la souris.

Un tel composant ne semble pas exister, j'ai donc besoin de créer le mien. J'ai trouvé deux pointeurs intéressants pour commencer à partir de FileExchange:

  • Reorderable Listbox: Pour prendre en charge pour rétablir l'ordre en faisant glisser les éléments.
  • dndcontrol: Pour prendre en charge pour faire glisser des fichiers à partir de certaines fenêtres de l'explorateur.

Je suis donc d'essayer de fusionner les deux pour créer la zone de liste personnalisée j'ai besoin et aussi de créer une plus dndcontrol générique pour que je puisse utiliser ce à d'autres fins (prise en charge des images, un meilleur contrôle sur les événements déclenchés, etc ...)

problème

à un certain moment je besoin de savoir si le composant source qui a initié l'opération de déplacement est le même que le composant cible qui recevra l'opération de baisse. Par exemple, mais pas seulement rester concentré sur ce cas particulier, je suis ok pour que ma listbox reçoive le transfert de texte de lui-même (pour le réordonnancement d'objet ou autre) mais pas d'autres composants (par exemple glisser du texte d'un autre composant ou fenêtre).

Lecture pour les méthodes et les propriétés de DropTargetDragEvent et DropTargetDropEvent événements que je peux recevoir d'un auditeur DropTarget il ne semble pas possible de le savoir. La seule chose que j'ai pu trouver était isLocalTransfer mais ceci indique seulement si la source et la cible sont dans la même JVM (et est seulement disponible au moment de l'arrêt, pas pendant le glissement par exemple).

Question

Je suppose que je peux gérer pour un hack pour le cas particulier de mon Listbox personnalisé, de toute façon est-il un moyen générique/plus standard avec Java savoir si la source et la cible sont les mêmes dans une opération glisser-déposer?

NB1: Peut-être que je pensais à attacher une sorte de glisser l'auditeur que j'ai pu attacher un écouteur de goutte (à savoir DropTarget), mais je ne sais pas si ce exist. NB: Désolé, je suis vraiment nouveau dans la programmation Java et la gestion des fichiers .dnd. J'espère que les explications que j'ai données aideront à comprendre ce que je veux accomplir.

Répondre

0

Il suffit d'ajouter des rappels sur les événements MousePressed et MouseReleased en plus de l'écouteur DropTarget. Si les événements de traînée sont reçus entre les deux, il est certain que le contrôle est à la fois la source et la cible. J'aurais dû me pencher là-dessus plus tôt.