2012-08-27 2 views
2

J'essaie d'implémenter un type de glisser-déposer avec JLabels. Fondamentalement, un JPanel se lance avec JLabels qui sont dans des boîtes spécifiées autour de l'écran (tous les JLabels et Boxes sont de la même taille). Ensuite, j'aimerais que l'utilisateur puisse faire glisser un JLabel dans une boîte et l'insérer dans la boîte; ce qui signifie que lorsque leur souris s'approche de la case, le programme sait que ce JLabel doit être inséré dans cette case.Faites glisser et accrochez JLabels en Java

Je pourrais faire cela fastidieusement avec l'écouteur de souris et la souris traîné et faire beaucoup de rendu (j'ai déjà commencé ceci, et ce n'est pas trop joli). Mais je me demandais s'il y avait quelque chose sur le web que tout le monde connaît, ou quelque chose de construit en java, ce qui m'aiderait.

REMARQUE: CECI N'EST PAS UNE QUESTION DE GLISSEMENT ET DE GLISSEMENT.

+0

http://stackoverflow.com/questions/874360/swing-creating-a-draggable-component lire cet article. Il montre une approche de mise en œuvre pour ce dont vous parlez. Un accrochage n'est pas différent d'un glissement, il a juste un ensemble de paramètres basés sur où le composant est. Je suppose que vous essayez d'implémenter quelque chose comme JQuery snaping qui utilise des étapes. Un algorithme ne va pas être trop complexe, mais "NOTE: CECI N'EST PAS UNE QUESTION À PROPOS DE DRAG ET DROP." ne te gagne pas d'amis. Regardez awt, pas Swing. MadProgrammer vous a donné quelques bons conseils. –

Répondre

1

Drag'n'Drop est un domaine de spécialité des besoins.

Jetez un oeil à la mise en œuvre de l'API TransferHandler pour les composants Swing. Fonctionne très bien pour les composants intégrés, prend un peu de travail pour se mettre au travail dans les composants personnalisés, mais est autrement impossible de prolonger (je vous regarde curseur personnalisé & glisser graphiques). Le problème est que n'importe quel toolkit/API/framework ne fonctionnera que dans les limites de sa conception de cible. Vous pouvez rendre la vie un peu plus facile en séparant les différents éléments de l'API DnD, en enregistrant les écouteurs, la gestion des événements, etc., afin de vous concentrer un peu mieux sur les exigences de la solution, mais en ce moment , c'est à peu près aussi loin que vous pourriez l'être. Par exemple, l'API que j'ai écrite ne répondra probablement pas à vos besoins, car j'ai écrit pour résoudre une série de problèmes particuliers auxquels je faisais face.

Juste MHO

+0

ce n'est pas glisser et déposer. c'est drag and snap. – CodeGuy

+0

@CodeGuy, il n'y a pas de différence fondamentale. Un simple utilise une cible lorsqu'il est libéré et l'autre intercepte basé sur des coordonnées tirant une animation. L'homme ici vient de répondre à votre question. –

+0

oui, il y a une différence majeure. regarder glisser et déposer avec un JTable contre glisser et déposer avec un JList ... avec un JTable, il y a claquements qui ocurrs. C'est ce que je veux, mais je le veux avec JLabels dans des positions d'accrochage définies sur un JPanel. – CodeGuy

0
+0

nudge, nudge, vous aimeriez peut-être lier à Java 7 API - cela pourrait vous obtenir un vote négatif sinon;) – MadProgrammer

+0

édité, merci. Je suis juste allé avec le premier résultat quand je Bing'd java.awt.dnd. Je n'ai pas réalisé que c'était la mauvaise version. – mrranstrom

+0

Pas "faux" par exemple, mais il met en évidence ces API qui pourraient être devenus obsolètes, donc même si l'OP utilise encore une ancienne version de Java, ils deviendront conscients de l'incompatibilité éventuelle – MadProgrammer

0

Essayez java exemples "snap-to-grid", puis modifier en conséquence pour apparier composants de l'interface?