Java by API/java.awt.dnd/DragSource

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

DragSource: createDefaultDragGestureRecognizer(Component c, int actions, DragGestureListener dgl)

   <source lang="java">

import java.awt.BorderLayout; import java.awt.dnd.DnDConstants; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.dnd.DragGestureRecognizer; import java.awt.dnd.DragSource; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; public class GestureTest extends JFrame implements DragGestureListener {

 DragSource ds = new DragSource();
 String[] items = { "Java", "C", "C++", "Lisp", "Perl", "Python" };
 JList jl = new JList(items);
 public GestureTest() {
   super("Gesture Test");
   setSize(200, 150);
   setDefaultCloseOperation(EXIT_ON_CLOSE);
   jl.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
   getContentPane().add(new JScrollPane(jl), BorderLayout.CENTER);
   DragGestureRecognizer dgr = ds.createDefaultDragGestureRecognizer(jl, DnDConstants.ACTION_COPY,
       this);
   setVisible(true);
 }
 public void dragGestureRecognized(DragGestureEvent dge) {
   System.out.println("Drag Gesture Recognized!");
 }
 public static void main(String args[]) {
   new GestureTest();
 }

}

      </source>
   
  
 
  



DragSource.DefaultCopyDrop

   <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>
   
  
 
  



DragSource.DefaultCopyNoDrop

   <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>
   
  
 
  



DragSource: getDefaultDragSource()

   <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>