Scala Swing エクスプローラーからファイルをドラッグ&ドロップする
Scala Swingの機能使って実現したかったけど、やり方が見つからなかったので、
JFrameのインスタンスを持ってきて、JavaのSwingと同じ方法で実現してます。
peerでJFrameのインスタンスを取得できるらしいです。
これ他にも応用聞くと思うので覚えておいたほうがいいですね。
import scala.swing.{ SimpleSwingApplication, MainFrame, Dimension, Dialog} import java.awt.dnd.DropTarget import java.awt.dnd.DropTargetDropEvent import java.awt.dnd.DnDConstants import java.awt.datatransfer.DataFlavor import scala.collection.JavaConversions._ object ScalaSwing extends SimpleSwingApplication { def top = new MainFrame { title = "Drag Drop" minimumSize = new Dimension(300, 200) peer.setDropTarget(new DropTarget(){ override def drop(e : DropTargetDropEvent) : Unit = { e.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE) val t = e.getTransferable() val fileList = (t.getTransferData(DataFlavor.javaFileListFlavor)).asInstanceOf[java.util.List[java.io.File]]; var a = new StringBuilder() fileList.map(x => a.append(x.getPath() + "\n")) //ドラッグされたファイルのパスを表示 Dialog.showMessage(message = a) } }) } }