⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dndlist.java

📁 北大Java 语言程序设计 ppt课件及源码
💻 JAVA
字号:
/** * This is an example of a component, which serves as a DragSource as  * well as Drop Target. * To illustrate the concept, JList has been used as a droppable target * and a draggable source. * Any component can be used instead of a JList. * The code also contains debugging messages which can be used for  * diagnostics and understanding the flow of events. *  * @version 1.0 */import java.awt.*;import java.awt.dnd.*;import java.awt.datatransfer.*;import java.util.Hashtable;import java.util.List;import java.util.Iterator;import java.io.*;import java.io.IOException;import javax.swing.JList;import javax.swing.DefaultListModel;public class DNDList extends JList    implements DNDComponentInterface, DropTargetListener,DragSourceListener, DragGestureListener    {  /**   * enables this component to be a dropTarget   */  DropTarget dropTarget = null;  /**   * enables this component to be a Drag Source   */  DragSource dragSource = null;  /**   * constructor - initializes the DropTarget and DragSource.   */  public DNDList() {        dropTarget = new DropTarget (this, this);    dragSource = new DragSource();    dragSource.createDefaultDragGestureRecognizer( this, DnDConstants.ACTION_MOVE, this);  }  /**   * is invoked when you are dragging over the DropSite   *    */  public void dragEnter (DropTargetDragEvent event) {        // debug messages for diagnostics     System.out.println( "dragEnter");    event.acceptDrag (DnDConstants.ACTION_MOVE);  }  /**   * is invoked when you are exit the DropSite without dropping   *   */  public void dragExit (DropTargetEvent event) {    System.out.println( "dragExit");      }  /**   * is invoked when a drag operation is going on   *    */  public void dragOver (DropTargetDragEvent event) {    System.out.println( "dragOver");  }  /**   * a drop has occurred   *    */   public void drop (DropTargetDropEvent event) {        try {        Transferable transferable = event.getTransferable();                           // we accept only Strings              if (transferable.isDataFlavorSupported (DataFlavor.stringFlavor)){                    event.acceptDrop(DnDConstants.ACTION_MOVE);            String s = (String)transferable.getTransferData ( DataFlavor.stringFlavor);            addElement( s );            event.getDropTargetContext().dropComplete(true);        }         else{            event.rejectDrop();        }    }    catch (IOException exception) {        exception.printStackTrace();        System.err.println( "Exception" + exception.getMessage());        event.rejectDrop();    }     catch (UnsupportedFlavorException ufException ) {      ufException.printStackTrace();      System.err.println( "Exception" + ufException.getMessage());      event.rejectDrop();    }  }  /**   * is invoked if the use modifies the current drop gesture   *    */      public void dropActionChanged ( DropTargetDragEvent event ) {  }  /**   * a drag gesture has been initiated   *    */    public void dragGestureRecognized( DragGestureEvent event) {        Object selected = getSelectedValue();    if ( selected != null ){        StringSelection text = new StringSelection( selected.toString());                 // as the name suggests, starts the dragging        dragSource.startDrag (event, DragSource.DefaultMoveDrop, text, this);    } else {        System.out.println( "nothing was selected");       }  }  /**   * this message goes to DragSourceListener, informing it that the dragging    * has ended   *    */  public void dragDropEnd (DragSourceDropEvent event) {       if ( event.getDropSuccess()){        removeElement();    }  }  /**   * this message goes to DragSourceListener, informing it that the dragging    * has entered the DropSite   *    */  public void dragEnter (DragSourceDragEvent event) {    System.out.println( " dragEnter");  }  /**   * this message goes to DragSourceListener, informing it that the dragging    * has exited the DropSite   *    */  public void dragExit (DragSourceEvent event) {    System.out.println( "dragExit");      }  /**   * this message goes to DragSourceListener, informing it that the dragging is currently    * ocurring over the DropSite   *    */  public void dragOver (DragSourceDragEvent event) {    System.out.println( "dragExit");      }  /**   * is invoked when the user changes the dropAction   *    */     public void dropActionChanged ( DragSourceDragEvent event) {    System.out.println( "dropActionChanged");   }  /**   * adds elements to itself   *    */      public void addElement( Object s ){        (( DefaultListModel )getModel()).addElement (s.toString());  }  /**   * removes an element from itself   */     public void removeElement(){    (( DefaultListModel)getModel()).removeElement( getSelectedValue());  }  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -