Advertisement
SoerenHelms

Java - Drag and Drop

Nov 5th, 2018
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.60 KB | None | 0 0
  1. import java.awt.Color;
  2. import java.awt.Component;
  3. import java.awt.Desktop;
  4. import java.awt.Dimension;
  5. import java.awt.Font;
  6. import java.awt.datatransfer.DataFlavor;
  7. import java.awt.datatransfer.Transferable;
  8. import java.awt.dnd.DropTarget;
  9. import java.awt.dnd.DropTargetDragEvent;
  10. import java.awt.dnd.DropTargetDropEvent;
  11. import java.awt.dnd.DropTargetEvent;
  12. import java.awt.dnd.DropTargetListener;
  13. import java.io.File;
  14. import java.util.ArrayList;
  15.  
  16. import javax.swing.JFrame;
  17. import javax.swing.JLabel;
  18. import javax.swing.SpringLayout;
  19. import javax.swing.SwingConstants;
  20. import javax.swing.border.LineBorder;
  21.  
  22. /**
  23.  * @author Stefan, https://st-page.de
  24.  *
  25.  */
  26. public class DragAndDrop extends JFrame
  27. {
  28.  
  29.     private static final long serialVersionUID = 1L;
  30.  
  31.     public DragAndDrop()
  32.     {
  33.         setSize(new Dimension(691, 363));
  34.         setPreferredSize(new Dimension(300, 200));
  35.     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  36.     setTitle("Java Drag And Drop");
  37.     SpringLayout springLayout = new SpringLayout();
  38.     getContentPane().setLayout(springLayout);
  39.  
  40.     JLabel lblDraganddrop = new JLabel("Drag And Drop");
  41.     springLayout.putConstraint(SpringLayout.NORTH, lblDraganddrop, 10, SpringLayout.NORTH, getContentPane());
  42.     springLayout.putConstraint(SpringLayout.WEST, lblDraganddrop, 10, SpringLayout.WEST, getContentPane());
  43.     springLayout.putConstraint(SpringLayout.SOUTH, lblDraganddrop, 315, SpringLayout.NORTH, getContentPane());
  44.     springLayout.putConstraint(SpringLayout.EAST, lblDraganddrop, -10, SpringLayout.EAST, getContentPane());
  45.     lblDraganddrop.setHorizontalTextPosition(SwingConstants.CENTER);
  46.     lblDraganddrop.setHorizontalAlignment(SwingConstants.CENTER);
  47.     lblDraganddrop.setBorder(new LineBorder(new Color(0, 0, 0)));
  48.     lblDraganddrop.setAlignmentX(Component.CENTER_ALIGNMENT);
  49.     lblDraganddrop.setVerticalAlignment(SwingConstants.CENTER);
  50.     lblDraganddrop.setVerticalTextPosition(SwingConstants.CENTER);
  51.     lblDraganddrop.setFont(new Font("Tahoma", Font.PLAIN, 48));
  52.     getContentPane().add(lblDraganddrop);
  53.    
  54.     setVisible(true);
  55.    
  56.     new DropTarget(lblDraganddrop, new DropTargetListener()
  57.     {
  58.         @Override
  59.         public void drop(DropTargetDropEvent dtde)
  60.         {
  61.         try
  62.         {
  63.             Transferable tr = dtde.getTransferable();
  64.             DataFlavor[] flavors = tr.getTransferDataFlavors();
  65.             ArrayList<File> fileNames = new ArrayList<File>();
  66.             for (int i = 0; i < flavors.length; i++)
  67.             {
  68.             if (flavors[i].isFlavorJavaFileListType())
  69.             {
  70.                 dtde.acceptDrop(dtde.getDropAction());
  71.                 @SuppressWarnings("unchecked")
  72.                 java.util.List<File> files = (java.util.List<File>) tr.getTransferData(flavors[i]);
  73.                 for (int k = 0; k < files.size(); k++)
  74.                 {
  75.                 fileNames.add(files.get(k));
  76.                 // Die Dateien werden mit dem spezifischen Programm geöffnet.
  77.                 Desktop.getDesktop().open(files.get(k));
  78.                 // Der Dateiname wird in der Comandozeile ausgegeben.
  79.                 System.out.println(files.get(k));
  80.                 }
  81.  
  82.                 dtde.dropComplete(true);
  83.             }
  84.             }
  85.             return;
  86.         }
  87.         catch (Throwable t)
  88.         {
  89.             t.printStackTrace();
  90.         }
  91.         dtde.rejectDrop();
  92.        
  93.         }
  94.  
  95.         @Override
  96.         public void dragEnter(DropTargetDragEvent dtde)
  97.         {}
  98.  
  99.         @Override
  100.         public void dragOver(DropTargetDragEvent dtde)
  101.         {}
  102.  
  103.         @Override
  104.         public void dropActionChanged(DropTargetDragEvent dtde)
  105.         {}
  106.  
  107.         @Override
  108.         public void dragExit(DropTargetEvent dte)
  109.         {}
  110.  
  111.     });
  112.     }
  113.  
  114.     /**
  115.      * Hier wird das Programm ohne weitere Argumente gestartet.
  116.      * @param args
  117.      */
  118.     public static void main(String[] args)
  119.     {
  120.     new DragAndDrop();
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement