java.awt.dnd和java.awt.datatransfer包是支持鼠标的拖放交换程序的数据的功能的

解决方案 »

  1.   

    文件1:
    package jdraganddropdemo;import javax.swing.JLabel;
    import java.awt.dnd.DragGestureEvent;
    import java.awt.dnd.DragGestureListener;
    import java.awt.dnd.*;
    import java.awt.datatransfer.*;class DragJLabel extends JLabel implements DragGestureListener, DragSourceListener {  DragSource ds = DragSource.getDefaultDragSource();
      public DragJLabel(String title,int alignment){
        super(title,alignment);    int action = DnDConstants.ACTION_COPY_OR_MOVE;
        ds.createDefaultDragGestureRecognizer(this,action,this);  }
      public void dragGestureRecognized(DragGestureEvent dge) {
        /**@todo Implement this java.awt.dnd.DragGestureListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dragGestureRecognized() not yet implemented.");
        try{
          Transferable tr = new StringSelection(this.getText());
          dge.startDrag(DragSource.DefaultCopyNoDrop,tr,this);
        }catch(Exception err){
          err.printStackTrace();
        }
      }
      public void dragEnter(DragSourceDragEvent dsde) {
        /**@todo Implement this java.awt.dnd.DragSourceListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dragEnter() not yet implemented.");
        DragSourceContext dsc = dsde.getDragSourceContext();
        int action = dsde.getDropAction();
        if ((action&DnDConstants.ACTION_COPY)!=0)
          dsc.setCursor(DragSource.DefaultCopyDrop);
        else
          dsc.setCursor(DragSource.DefaultCopyNoDrop);
      }
      public void dragOver(DragSourceDragEvent dsde) {
        /**@todo Implement this java.awt.dnd.DragSourceListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dragOver() not yet implemented.");
      }
      public void dropActionChanged(DragSourceDragEvent dsde) {
        /**@todo Implement this java.awt.dnd.DragSourceListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dropActionChanged() not yet implemented.");
      }
      public void dragExit(DragSourceEvent dse) {
        /**@todo Implement this java.awt.dnd.DragSourceListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dragExit() not yet implemented.");
      }
      public void dragDropEnd(DragSourceDropEvent dsde) {
        /**@todo Implement this java.awt.dnd.DragSourceListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dragDropEnd() not yet implemented.");
        if (!dsde.getDropSuccess())
          return;
       // int action = dsde.getDropAction();
        //if ((action&DnDConstants.ACTION_MOVE)!=0)
         // this.setText("");
      }
    }
      

  2.   

    文件2:
    package jdraganddropdemo;import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.awt.datatransfer.*;
    import java.awt.dnd.*;public class MainFrame extends JFrame implements DropTargetListener {
      private JPanel contentPane;
      private BorderLayout borderLayout1 = new BorderLayout();
      private JTextField jTextField1 = new JTextField();  DragJLabel label = new DragJLabel("Hello World !",SwingConstants.CENTER);
      //Construct the frame
      public MainFrame() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      //Component initialization
      private void jbInit() throws Exception  {
        //setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(borderLayout1);
        this.setSize(new Dimension(410, 114));
        this.setTitle("JDragAndDropDemo");
        jTextField1.setFont(new java.awt.Font("Dialog", 0, 14));
        contentPane.add(jTextField1, BorderLayout.SOUTH);
        contentPane.add(this.label,BorderLayout.NORTH);    new DropTarget(this.jTextField1,DnDConstants.ACTION_COPY_OR_MOVE,this);
      }
      //Overridden so we can exit when window is closed
      protected void processWindowEvent(WindowEvent e) {
        super.processWindowEvent(e);
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
          System.exit(0);
        }
      }
      public void dragEnter(DropTargetDragEvent dtde) {
        /**@todo Implement this java.awt.dnd.DropTargetListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dragEnter() not yet implemented.");
      }
      public void dragOver(DropTargetDragEvent dtde) {
        /**@todo Implement this java.awt.dnd.DropTargetListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dragOver() not yet implemented.");
      }
      public void dropActionChanged(DropTargetDragEvent dtde) {
        /**@todo Implement this java.awt.dnd.DropTargetListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dropActionChanged() not yet implemented.");
      }
      public void dragExit(DropTargetEvent dte) {
        /**@todo Implement this java.awt.dnd.DropTargetListener method*/
        //throw new java.lang.UnsupportedOperationException("Method dragExit() not yet implemented.");
      }
      public void drop(DropTargetDropEvent dtde) {
        /**@todo Implement this java.awt.dnd.DropTargetListener method*/
        //throw new java.lang.UnsupportedOperationException("Method drop() not yet implemented.");
        try{
          Transferable tr = dtde.getTransferable();
          if (dtde.isDataFlavorSupported(DataFlavor.stringFlavor)){
            dtde.acceptDrop(dtde.getDropAction());
            String s = (String) tr.getTransferData(DataFlavor.stringFlavor);
            this.jTextField1.setText(this.jTextField1.getText()+s);
            dtde.dropComplete(true);
          }else{
            dtde.rejectDrop();      }
        }catch(Exception err){
            err.printStackTrace();
          }
      }
    }
      

  3.   

    不能连续回复大于3次
    第三个文件:
    package jdraganddropdemo;import javax.swing.UIManager;
    import java.awt.*;public class JDragAndDropDemo {
      private boolean packFrame = false;  //Construct the application
      public JDragAndDropDemo() {
        MainFrame frame = new MainFrame();
        //Validate frames that have preset sizes
        //Pack frames that have useful preferred size info, e.g. from their layout
        if (packFrame) {
          frame.pack();
        }
        else {
          frame.validate();
        }
        //Center the window
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
          frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
          frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
      }
      //Main method
      public static void main(String[] args) {
    /*    try {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception e) {
          e.printStackTrace();
        }
    */    new JDragAndDropDemo();
      }
    }