# JTree - Drag and Drop



## friedak (3. Jun 2007)

Hallo zusammen,

ich habe einen JTree gebaut, dessen Inhalte man per Drag and Drop auf dien JTextArea ziehen kann. Und zwar habe ich folgende Zeile eingefügt:
	tree.setDragEnabled( true ); 

Nun möchte ich aber definieren, dass nur bestimmte Blätter per Drag and Drop übertragen werden dürfen. Wo kann ich so etwas definieren? Gibt es einen DragDrop-Listener oder so etwas?

Gruß,
friedak


----------



## André Uhres (4. Jun 2007)

Vielleicht könntest du, ohne setDragEnabled(true) zu setzen, einen exportAsDrag(..) machen
wenn der selektierte Node deinen Kriterien entspricht:

```
package tree;
/*
 * TreeDragDemo.java
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.tree.*;
public class TreeDragDemo extends JFrame {
    private JTextArea textarea;
    private JTree tree;
    public TreeDragDemo() {
        super("Tree Drag Demo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        tree = new JTree();
        textarea = new JTextArea();
        tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
        tree.addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseDragged(final MouseEvent evt) {
                treeMouseDragged(evt);
            }
        });
        getContentPane().add(new JScrollPane(tree), BorderLayout.CENTER);
        textarea.setColumns(20);
        getContentPane().add(new JScrollPane(textarea), BorderLayout.EAST);
        pack();
    }
    private void treeMouseDragged(final MouseEvent evt) {
        if(((TreeNode)tree.getLastSelectedPathComponent()).isLeaf()){
            tree.getTransferHandler().exportAsDrag(tree, evt, TransferHandler.COPY);
        }
    }
    public static void main(final String args[]) {new TreeDragDemo().setVisible(true);}
}
```


----------



## friedak (4. Jun 2007)

super, das klappt ja prima! Vielen Dank


----------

