我试图拖放功能添加到我的程序,使用户可以拖放从Windows文件拖放。因此我实现了SWT DropTargetListener
接口并添加了一个SWT DropTarget
到我的SWT控件。
public class MyFileDrop implements DropTargetListener {
public MyFileDrop(final Control control) {
addDropTarget(control);
}
private void addDropTarget(final Control control) {
final DropTarget dropTarget = new DropTarget(control, DND.DROP_COPY | DND.DROP_DEFAULT);
dropTarget.setTransfer(new Transfer[] { FileTransfer.getInstance() });
dropTarget.addDropListener(this);
}
@Override
public void drop(final DropTargetEvent event) {
String[] fileNames = (String[]) event.data;
for (final String fileName : fileNames) {
System.out.println(fileName);
}
}
// other DropTargetListener methods [...]
}
如果我将它从Windows资源管理器的文件夹拖放到我的控制,文件夹名被打印出来。但该文件夹内的所有文件都未列出。
例
folder1中
- subfile1.png
- subfile2.exe
file1.png
file2.exe
如果我选择folder1
,file1
和file2
并将其拖放到我的程序中是输出:
path/to/folder1
path/to/file1.png
path/to/file2.exe
问题
为什么没有在文件夹内的文件下降到该计划?我如何归档这些文件也被删除?
我怎样才能远离文件夹设置的文件吗?
问候winklerrr
这些似乎是关于在SWT代码的控制之外的Windows资源管理器的行为。放置目标只是获取源想要给它的内容。 –
您拖动了三个项目,一个文件夹和两个文件。这就是你在代码中看到的。如果你想递归获取文件,你必须自己做。您可以使用'Files#isDirectory(Path)'和'Files#isRegularFile(Path)'来区分文件和文件夹。 – Baz