我試圖拖放功能添加到我的程序,使用戶可以拖放從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