JList
ドラッグ&ドロップが有効になっています。ここで、Java プロジェクトのパッケージからファイルを追加して、JList
アイコンを前面に表示させます。JList
からデスクトップに D&D すると問題なく動作しますが、JAR
ファイル (または を使用して EXE ファイルlaunch4j
) を作成すると、JAR 内のファイルのドラッグ & ドロップが機能しなくなります。解決策はありますか?JListに設定されている私Transferable
のクラスは次のとおりです。TransferHandler
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;
}
}