TITLE:FileをJavaアプリケーションからドロップ

FileをJavaアプリケーションからドロップ

編集者:Terai Atsuhiro
作成日:2005-11-14
更新日:2024-01-19 (金) 11:21:43

概要

JavaアプリケーションからWindowsのデスクトップなどにFileをドロップします。

#screenshot

サンプルコード

class MyDragGestureListener implements DragGestureListener {
  public void dragGestureRecognized(DragGestureEvent dge) {
    final File tmpfile = getFile();
    if(tmpfile==null) {
      return;
    }
    Transferable tran = new Transferable() {
      public Object getTransferData(DataFlavor flavor) {
        ArrayList al = new ArrayList(1);
        al.add(tmpfile);
        return al;
      }
      public DataFlavor[] getTransferDataFlavors() {
        return new DataFlavor[] { DataFlavor.javaFileListFlavor };
      }
      public boolean isDataFlavorSupported(DataFlavor flavor) {
        return flavor.equals(DataFlavor.javaFileListFlavor);
      }
    };
    DragSourceAdapter dsa = new DragSourceAdapter() {
      public void dragDropEnd(DragSourceDropEvent dsde) {
        if(dsde.getDropSuccess()) {
          clearFile();
        }
      }
    };
    dge.startDrag(DragSource.DefaultMoveDrop, tran, dsa);
  }
}
  • &jar;
  • &zip;

解説

上記のサンプルでは、ボタンで空の一時ファイルを生成し、ラベルをマウスでドラッグすると生成したファイルをデスクトップなどに移動することが出来ます。

以下のようにDragGestureListenerを登録することでラベルをD&Dし、JFileChooserなどで書き出すフォルダなどを指定する手間が省いています。

DragSource dragSource = DragSource.getDefaultDragSource();
dragSource.createDefaultDragGestureRecognizer(label,
       DnDConstants.ACTION_MOVE, new MyDragGestureListener());

参考リンク

コメント