我启用了拖放功能JList
。现在我将我的Java项目中的包中的文件添加到JList
a,让它们在前面显示它的图标。现在,如果我从JList
到桌面的D& D,它的效果很好,但如果我使用JAR
创建launch4j
文件(或EXE文件),请拖放文件在JAR中不再有效。有解决方案吗这是我的Transferable
和TransferHandler
类,它设置为JList:
public class TransferableFile implements Transferable
{
private List<File> fileList;
public TransferableFile(List<File> files)
{
fileList = files;
}
@Override
public DataFlavor[] getTransferDataFlavors()
{
return new DataFlavor[] { DataFlavor.javaFileListFlavor };
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor)
{
return flavor.equals(DataFlavor.javaFileListFlavor);
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException
{
if (flavor.equals(DataFlavor.javaFileListFlavor))
return fileList;
throw new UnsupportedFlavorException(flavor);
}
}
public class FileListTransferHandler extends TransferHandler
{
@Override
public int getSourceActions(JComponent c)
{
return COPY;
}
@Override
protected Transferable createTransferable(JComponent c)
{
@SuppressWarnings("unchecked")
JList<File> list = (JList<File>) c;
File value = (File) list.getSelectedValue();
Vector<File> files = new Vector<>();
String listEntry;
listEntry = value.getAbsolutePath();
JOptionPane.showMessageDialog(null, listEntry);
files.add(new File(listEntry));
TransferableFile tf = new TransferableFile(files);
return tf;
}
}