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

📄 dragsourcetest.java

📁 sun公司开发的,java2核心技术,卷II:高级性能,包括一系列的高级java应用技术,如数据库德连接,高级swing,多线程,软件本地化等等,本文件中则包含该书中的所用实例,配合该书使用,使对ja
💻 JAVA
字号:
/**
 * @version 1.00 1999-09-11
 * @author Cay Horstmann
 */

import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;

public class DragSourceTest
{  public static void main(String[] args)
   {  JFrame frame = new DragSourceFrame();
      frame.show();
   }
}

class DragSourceFrame extends JFrame
   implements DragSourceListener, DragGestureListener
{  public DragSourceFrame()
   {  setTitle("DragSourceTest");
      setSize(300, 200);
      addWindowListener(new WindowAdapter()
         {  public void windowClosing(WindowEvent e)
            {  System.exit(0);
            }
         } );

      Container contentPane = getContentPane();
      File f = new File(".").getAbsoluteFile();
      File[] files = f.listFiles();
      model = new DefaultListModel();
      for (int i = 0; i < files.length; i++)
         model.addElement(files[i]);
      fileList = new JList(model);
      contentPane.add(new JScrollPane(fileList), "Center");
      contentPane.add(new JLabel("Drag files from this list"),
         "North");

      DragSource dragSource = DragSource.getDefaultDragSource();
      dragSource.createDefaultDragGestureRecognizer(fileList,
         DnDConstants.ACTION_COPY_OR_MOVE, this);
   }

   // DragGestureListener method

   public void dragGestureRecognized(DragGestureEvent event)
   {  draggedValues = fileList.getSelectedValues();
      Transferable transferable
         = new FileListTransferable(draggedValues);
      event.startDrag(null, transferable, this);
   }

   // DragSourceListener methods

   public void dragEnter(DragSourceDragEvent event)
   {
   }

   public void dragOver(DragSourceDragEvent event)
   {
   }

   public void dragExit(DragSourceEvent event)
   {
   }

   public void dropActionChanged(DragSourceDragEvent event)
   {
   }

   public void dragDropEnd(DragSourceDropEvent event)
   {  if (event.getDropSuccess())
      {  int action = event.getDropAction();
         if (action == DnDConstants.ACTION_MOVE)
         {  for (int i = 0; i < draggedValues.length; i++)
               model.removeElement(draggedValues[i]);
         }
      }
   }

   private JList fileList;
   private DefaultListModel model;
   private Object[] draggedValues;
}

class FileListTransferable implements Transferable
{  public FileListTransferable(Object[] files)
   {  fileList = new ArrayList(Arrays.asList(files));
   }

   public DataFlavor[] getTransferDataFlavors()
   {  return flavors;
   }

   public boolean isDataFlavorSupported(DataFlavor flavor)
   {  return Arrays.asList(flavors).contains(flavor);
   }

   public synchronized Object getTransferData
      (DataFlavor flavor)
      throws UnsupportedFlavorException
   {  if(flavor.equals(DataFlavor.javaFileListFlavor))
      {  return fileList;
      }
      else if(flavor.equals(DataFlavor.stringFlavor))
      {  return fileList.toString();
      }
      else
      {  throw new UnsupportedFlavorException(flavor);
      }
   }

   private static DataFlavor[] flavors =
      {  DataFlavor.javaFileListFlavor,
         DataFlavor.stringFlavor
      };

   private java.util.List fileList;
}

⌨️ 快捷键说明

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