📄 dragsourcetest.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 + -