0

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;
  }
}
4

0 に答える 0