Bonjour,
Je voudrais savoir comment on fait pour rendre une JTree dropable ?
J'ai eu beau chercher g rien trouver pour les JTree.
Merci d'avance
Bonjour,
Je voudrais savoir comment on fait pour rendre une JTree dropable ?
J'ai eu beau chercher g rien trouver pour les JTree.
Merci d'avance
Tu as la methode setDropTarget(DropTarget dt), mais je n'ai jamais essaye.
Moi j'utilise plutot un TransferHandler customise et la methode tree.setTransferHandler(TransferHandler handler) . Ensuite regarde du cote des methodes canImport(JComponent component, DataFlavor[] flavors) et importData(JComponent component, Transferable t) du TransfertHandler.
Tu peux determiner le noeud sur lequel est relache la souris avec tree.getSelectionPath().getLastPathComponent().
Enfin si tu veux activer le drag il te faut faire myTree.setDragEnabled(true).
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
va sur java2s.com, il y a pas mal d'exemples !!!
Et voici une parti de code que j'ai faite, il y a bien longtemps...(donc pas maintenu et pas très propre, mais bon...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 public class JTreeDropTarget implements DropTargetListener { private static final String TEMP_FILE = "src/tracking/text_temp.txt"; protected JTree jTree; protected DropTarget dropTarget; private ClusterixGui clusterixGui; public JTreeDropTarget(JTree jTree, ClusterixGui clusterixGui) { this.jTree = jTree; this.clusterixGui = clusterixGui; dropTarget = new DropTarget(jTree, DnDConstants.ACTION_COPY_OR_MOVE, this, jTree.isEnabled(), null); } public void dragEnter(DropTargetDragEvent dtde) { } public void dragOver(DropTargetDragEvent dtde) { } public void dropActionChanged(DropTargetDragEvent dtde) { } public void dragExit(DropTargetEvent dte) { } public void drop(DropTargetDropEvent dtde) { DnDUtils.debugPrintln("DropTarget drop, drop action = " + DnDUtils.showActions(dtde.getDropAction())); // Check the drop action if ((dtde.getDropAction() & DnDConstants.ACTION_COPY_OR_MOVE) != 0) { // Accept the drop and get the transfer data dtde.acceptDrop(dtde.getDropAction()); Transferable transferable = dtde.getTransferable(); boolean dropSucceeded = false; try { jTree.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); // Save the user's selections // saveTreeSelection(); dropSucceeded = dropFile(dtde.getDropAction(), transferable, dtde.getLocation()); DnDUtils.debugPrintln("Drop completed, success: " + dropSucceeded); } catch (Exception e) { DnDUtils.debugPrintln("Exception while handling drop " + e); } finally { jTree.setCursor(Cursor.getDefaultCursor()); // Restore the user's selections //restoreTreeSelection(); dtde.dropComplete(dropSucceeded); } } else { DnDUtils.debugPrintln("Drop target rejected drop"); dtde.dropComplete(false); } } protected boolean dropFile(int action, Transferable transferable, Point location) throws IOException, UnsupportedFlavorException, MalformedURLException { //Your action return true; } }
--
Ludovic
Et il suffit juste de l'instancié, j'avais ça:
Me demande pas plus d'explications que ça, pcq je ne me souviens de rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part new JTreeDropTarget(tree, this);
--
Ludovic
Merci bcp ca m'a bien aidé et ca m'a permis de faire fonctionner cette fonctionnalité.
A++
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager