- PR -

swingからファイルをドラッグ&ドロップ

1
投稿者投稿内容
がう
会議室デビュー日: 2005/02/03
投稿数: 10
投稿日時: 2006-01-07 13:39
いつもお世話になっています。

swing画面のリスト上からwindowsのフォルダに
ファイルをドラッグドロップしてコピーさせたいのですが
どうすればいいのでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-01-07 16:34
こんなの↓参考になりそうです。
http://answers.google.com/answers/threadview?id=582445
[swing drag and drop file explorer]で調べました。
http://www.google.com/search?hl=ja&c2coff=1&client=safari&rls=ja-jp&q=swing+drag+and+drop+file+explorer&btnG=Google+検索&lr=
がう
会議室デビュー日: 2005/02/03
投稿数: 10
投稿日時: 2006-01-07 18:18
インギさま、参考URLありがとうございました。
リンク先の質問者もわたしと同じ悩みを抱えているようですね。

でも回答者に対する質問者の答えが、
> This PDF from OReilly is all about D&D but does not cover ANYTHING on
how to drop from swing OUT TO Windows Explorer
となっていて、まだ解決していないようです
a-san
ベテラン
会議室デビュー日: 2004/06/01
投稿数: 53
投稿日時: 2006-01-13 23:54
以下のソースで試してみてください。
その前に、C:ドライブのルートに、あらかじめTest.txtというファイルを作っておいてください。
コード:
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.io.File;
import java.util.ArrayList;
import javax.swing.*;

public class SwingTest implements Transferable, DragGestureListener {
    JFrame frame;
    SwingTest() {
        frame = new JFrame();
        DragSource dragSource = new DragSource();
        DragGestureRecognizer dgr = dragSource.createDefaultDragGestureRecognizer(
                    frame,
                    DnDConstants.ACTION_COPY_OR_MOVE,
                    this);
        frame.setSize(640, 480);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    public Object getTransferData(DataFlavor flavor) {
        ArrayList filelist = new ArrayList();
        filelist.add(new File("C:/Test.txt"));
       return filelist;
    }
    public DataFlavor[] getTransferDataFlavors() {
       return new DataFlavor[] {DataFlavor.javaFileListFlavor};
    }
    public boolean isDataFlavorSupported(DataFlavor flavor) {
       return flavor.equals(DataFlavor.javaFileListFlavor);
    }
    public void dragGestureRecognized(DragGestureEvent e) {
       if((e.getDragAction()|DnDConstants.ACTION_COPY_OR_MOVE)!=0) {
           e.startDrag(DragSource.DefaultCopyDrop, this, null);
       }
    }
    public static void main(String[] args) {
        new SwingTest();
    }
}

がう
会議室デビュー日: 2005/02/03
投稿数: 10
投稿日時: 2006-01-16 18:56
a-sanさま、ソースをありがとうございました。
すみません、質問が足りませんでした。
ドロップ先のディレクトリを取得したい場合はどうしたらよいのでしょうか?
a-san
ベテラン
会議室デビュー日: 2004/06/01
投稿数: 53
投稿日時: 2006-01-17 22:06
多分無理でしょう。
Drop先のことはわからないし、それがエクスプローラかどうかもわかりません。
ひょっとしたらJNIとかWindowsAPIを駆使すればできるかもしれませんが、
Javaだけなら無理でしょう。
1

スキルアップ/キャリアアップ(JOB@IT)