Swing/DragSource のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/DragSource へ行く。
- 1 (2005-11-14 (月) 21:13:08)
- 2 (2005-11-17 (木) 17:57:18)
- 3 (2005-11-29 (火) 13:37:48)
- 4 (2006-02-27 (月) 15:50:12)
- 5 (2006-04-12 (水) 19:42:25)
- 6 (2006-04-16 (日) 01:35:56)
- 7 (2007-03-15 (木) 14:27:54)
- 8 (2007-07-27 (金) 13:13:14)
- 9 (2012-02-08 (水) 21:23:58)
- 10 (2013-03-21 (木) 16:06:06)
- 11 (2013-05-26 (日) 05:30:45)
- 12 (2015-01-08 (木) 14:04:55)
- 13 (2015-12-15 (火) 17:06:25)
- 14 (2017-06-09 (金) 13:11:35)
- 15 (2018-06-05 (火) 13:44:46)
- 16 (2018-10-17 (水) 18:40:51)
- 17 (2020-10-15 (木) 09:55:04)
- 18 (2022-08-02 (火) 16:39:50)
- 19 (2023-09-06 (水) 12:06:56)
- 20 (2024-01-19 (金) 11:21:43)
FileをJavaアプリケーションからドロップ
編集者:Terai Atsuhiro
作成日:2005-11-14
更新日:2024-01-19 (金) 11:21:43
概要
JavaアプリケーションからWindowsのデスクトップなどにFileをドロップします。
サンプルコード
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); } }
解説
上記のサンプルでは、ボタンで空の一時ファイルを生成し、ラベルをマウスでドラッグすると生成したファイルをデスクトップなどに移動することが出来ます。
以下のようにDragGestureListenerを登録することでラベルをD&Dし、JFileChooserなどで書き出すフォルダなどを指定する手間が省いています。
DragSource dragSource = DragSource.getDefaultDragSource(); dragSource.createDefaultDragGestureRecognizer(label, DnDConstants.ACTION_MOVE, new MyDragGestureListener());