Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Drag and drop of a group of files into a tree

import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; import javax.swing.JComponent; import javax.swing.JTree; import javax.swing.TransferHandler; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; public class MyTree extends JTree {   public MyTree() {     super();     setDragEnabled(false);     setTransferHandler(new FSTransfer());   } } class FSTransfer extends TransferHandler {   public boolean importData(JComponent comp, Transferable t) {     if (!(comp instanceof MyTree)) {       return false;     }     if (!t.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {       return false;     }     MyTree tree = (MyTree) comp;     DefaultTreeModel model = (DefaultTreeModel) tree.getModel();     DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();     try {       List data = (List) t.getTransferData(DataFlavor.javaFileListFlavor);       Iterator i = data.iterator();       while (i.hasNext()) {         File f = (File) i.next();         root.add(new DefaultMutableTreeNode(f.getName()));       }       model.reload();       return true;     } catch (Exception ioe) {       System.out.println(ioe);     }     return false;   }   public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {     if (comp instanceof MyTree) {       for (int i = 0; i < transferFlavors.length; i++) {         if (!transferFlavors[i].equals(DataFlavor.javaFileListFlavor)) {           return false;         }       }       return true;     }     return false;   } }