java swing 文件拖拽解析
时间: 2023-08-28 19:08:16 浏览: 46
好的,关于Java Swing文件拖拽解析,您可以参考以下代码实现:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.io.*;
public class FileDrop extends JPanel implements DropTargetListener {
private DropTarget dropTarget;
private JLabel message;
public FileDrop() {
setLayout(new BorderLayout());
message = new JLabel("拖拽文件到此区域");
message.setHorizontalAlignment(SwingConstants.CENTER);
add(message, BorderLayout.CENTER);
dropTarget = new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this, true);
}
@Override
public void dragEnter(DropTargetDragEvent dtde) {}
@Override
public void dragOver(DropTargetDragEvent dtde) {}
@Override
public void dropActionChanged(DropTargetDragEvent dtde) {}
@Override
public void dragExit(DropTargetEvent dte) {}
@Override
public void drop(DropTargetDropEvent dtde) {
try {
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
Transferable transferable = dtde.getTransferable();
DataFlavor[] flavors = transferable.getTransferDataFlavors();
for (DataFlavor flavor : flavors) {
if (flavor.isFlavorJavaFileListType()) {
Object data = transferable.getTransferData(flavor);
if (data instanceof java.util.List) {
java.util.List<File> files = (java.util.List<File>) data;
for (File file : files) {
System.out.println("文件路径:" + file.getAbsolutePath());
}
}
}
}
dtde.dropComplete(true);
} catch (Exception e) {
e.printStackTrace();
dtde.dropComplete(false);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("文件拖拽解析");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setContentPane(new FileDrop());
frame.setVisible(true);
}
}
```
这是一个基于Java Swing实现的文件拖拽解析程序,您可以将文件拖拽到窗口中间的区域,程序会将文件路径输出到控制台中。希望对您有所帮助。