Java by API/java.awt.dnd/DropTargetListener

Материал из Java эксперт
Перейти к: навигация, поиск

implements DropTargetListener

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Color; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.dnd.DnDConstants; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragSource; import java.awt.dnd.DragSourceContext; import java.awt.dnd.DragSourceDragEvent; import java.awt.dnd.DragSourceDropEvent; import java.awt.dnd.DragSourceEvent; import java.awt.dnd.DragSourceListener; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.awt.dnd.InvalidDnDOperationException; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; public class MainClass extends JFrame implements ActionListener, DropTargetListener {

 DragLabel source = new DragLabel("Drag and drop me to the following JButton", JLabel.CENTER);
 JButton target = new JButton();
 MainClass(String title) {
   super(title);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   source.setForeground(Color.red);
   getContentPane().add(source, BorderLayout.NORTH);
   target.addActionListener(this);
   getContentPane().add(target, BorderLayout.SOUTH);
   new DropTarget(target, DnDConstants.ACTION_COPY_OR_MOVE, this);
   setSize(205, 100);
   setVisible(true);
 }
 public void actionPerformed(ActionEvent e) {
   JButton b = (JButton) e.getSource();
   b.setText("");
   source.setText("Drag and drop me to the following JButton");
 }
 public void dragEnter(DropTargetDragEvent e) {
   System.out.println("Entering drop target #1");
 }
 public void dragExit(DropTargetEvent e) {
   System.out.println("Exiting drop target #1");
 }
 public void dragOver(DropTargetDragEvent e) {
   System.out.println("Dragging over drop target #1");
 }
 public void drop(DropTargetDropEvent e) {
   System.out.println("Dropping");
   try {
     Transferable t = e.getTransferable();
     if (e.isDataFlavorSupported(DataFlavor.stringFlavor)) {
       e.acceptDrop(e.getDropAction());
       String s;
       s = (String) t.getTransferData(DataFlavor.stringFlavor);
       target.setText(s);
       e.dropComplete(true);
     } else
       e.rejectDrop();
   } catch (java.io.IOException e2) {
   } catch (UnsupportedFlavorException e2) {
   }
 }
 public void dropActionChanged(DropTargetDragEvent e) {
   System.out.println("Drop action changed #1");
 }
 public static void main(String[] args) {
   new MainClass("Drag and Drop Demo");
 }

} class DragLabel extends JLabel implements DragGestureListener, DragSourceListener {

 private DragSource ds = DragSource.getDefaultDragSource();
 public DragLabel(String s, int alignment) {
   super(s, alignment);
   int action = DnDConstants.ACTION_COPY_OR_MOVE;
   ds.createDefaultDragGestureRecognizer(this, action, this);
 }
 public void dragGestureRecognized(DragGestureEvent e) {
   try {
     Transferable t = new StringSelection(getText());
     e.startDrag(DragSource.DefaultCopyNoDrop, t, this);
   } catch (InvalidDnDOperationException e2) {
     System.out.println(e2);
   }
 }
 public void dragDropEnd(DragSourceDropEvent e) {
   System.out.println("Drag and drop end");
   if (e.getDropSuccess() == false) {
     System.out.println("unsuccessful");
     return;
   }
   int action = e.getDropAction();
   if ((action & DnDConstants.ACTION_MOVE) != 0)
     setText("");
 }
 public void dragEnter(DragSourceDragEvent e) {
   System.out.println("Entering drop target #2");
   DragSourceContext ctx = e.getDragSourceContext();
   int action = e.getDropAction();
   if ((action & DnDConstants.ACTION_COPY) != 0)
     ctx.setCursor(DragSource.DefaultCopyDrop);
   else
     ctx.setCursor(DragSource.DefaultCopyNoDrop);
 }
 public void dragExit(DragSourceEvent e) {
   System.out.println("Exiting drop target #2");
 }
 public void dragOver(DragSourceDragEvent e) {
   System.out.println("Dragging over drop target #2");
 }
 public void dropActionChanged(DragSourceDragEvent e) {
   System.out.println("Drop action changed #2");
 }

}

      </source>
   
  
 
  



implements DropTargetListener (Get drop file from file explor)

   <source lang="java">

import java.awt.BorderLayout; import java.awt.Color; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; public class DropTest extends JFrame implements DropTargetListener {

 DropTarget dt;
 JTextArea ta = new JTextArea();
 public DropTest() {
   super("Drop Test");
   setSize(300, 300);
   setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   add(new JLabel("Drop a list from your file chooser here:"), BorderLayout.NORTH);
   ta.setBackground(Color.white);
   getContentPane().add(ta, BorderLayout.CENTER);
   dt = new DropTarget(ta, this);
   setVisible(true);
 }
 public void dragEnter(DropTargetDragEvent dtde) {
   System.out.println("Drag Enter");
 }
 public void dragExit(DropTargetEvent dte) {
   System.out.println("Source: " + dte.getSource());
   System.out.println("Drag Exit");
 }
 public void dragOver(DropTargetDragEvent dtde) {
   System.out.println("Drag Over");
 }
 public void dropActionChanged(DropTargetDragEvent dtde) {
   System.out.println("Drop Action Changed");
 }
 public void drop(DropTargetDropEvent dtde) {
   try {
     Transferable tr = dtde.getTransferable();
     DataFlavor[] flavors = tr.getTransferDataFlavors();
     for (int i = 0; i < flavors.length; i++) {
       System.out.println("Possible flavor: " + flavors[i].getMimeType());
       if (flavors[i].isFlavorJavaFileListType()) {
         dtde.acceptDrop(DnDConstants.ACTION_COPY);
         ta.setText("Successful file list drop.\n\n");
         java.util.List list = (java.util.List) tr.getTransferData(flavors[i]);
         for (int j = 0; j < list.size(); j++) {
           ta.append(list.get(j) + "\n");
         }
         dtde.dropComplete(true);
         return;
       }
     }
     System.out.println("Drop failed: " + dtde);
     dtde.rejectDrop();
   } catch (Exception e) {
     e.printStackTrace();
     dtde.rejectDrop();
   }
 }
 public static void main(String args[]) {
   new DropTest();
 }

}

      </source>