Java by API/java.awt.dnd/DragSource — различия между версиями

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

Текущая версия на 14:48, 31 мая 2010

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

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();
  }
}





DragSource.DefaultCopyDrop

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");
  }
}





DragSource.DefaultCopyNoDrop

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");
  }
}





DragSource: getDefaultDragSource()

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");
  }
}