我想创建一个从 JList 到操作系统的 DND 操作。我现在的解决方案是使用 TransferHandler。在 createTransferable 方法中,我使用要复制的文件创建 Transferable。
但现在有我的问题:在某些情况下,我必须先从 FTP 服务器下载文件,然后才能复制文件。非常繁重的下载操作在 JavaSwingWorker 中运行(隐藏在 d.download(tmpDir); 语句后面)。现在系统尝试复制尚未下载的文件。
现在我需要一种机制,允许我在下载文件后创建可传输文件。我的问题有解决方案吗?请帮我!
谢谢!
这是我的方法:
public Transferable createTransferable(JComponent c) {
JList list = (JList) c; // we know it's a JList
List<PictureDecorator> selectedPictures = getSelectedValues(list.getModel());
Vector cpFiles = new Vector();
List<Picture> donePictures = new ArrayList<Picture>();
List<Picture> notDonePictures = new ArrayList<Picture>();
String tmpDir = System.getProperty("java.io.tmpdir");
for(PictureDecorator pd : selectedPictures){
if(pd.getPic().getStatus() == PictureStatus.DONE)
donePictures.add(pd.getPic());
else
notDonePictures.add(pd.getPic());
}
Downloader d = new Downloader(parent, loginInformation, sced, donePictures, order);
d.download(tmpDir);
for(Picture p : donePictures){
cpFiles.add(new File(tmpDir + File.separator + p.getPicture().getName()));
}
for(Picture p : notDonePictures) {
cpFiles.add(p.getPicture());
}
TransferableFile tf = new TransferableFile(cpFiles);
return tf;
}
我需要启动拖动过程的东西,然后我得到拖动的路径,然后我可以下载图片并将其复制到目标路径。
编辑:或另一种表述:当我进入操作系统时,如何找到放置目的地?