java GUI拖拽功能是很實用也相對高級一些的功能。
有一小部分的GUI控件支持
他們有dragEnabled屬性.這些JComponent包括:
javax.swing.JColorChooser
javax.swing.JFileChooser
javax.swing.JList
javax.swing.JTable
javax.swing.JTree
javax.swing.text.JTextComponent
大部分的控件不支持沒有這個屬性,尤其是常用的jpanel和jframe。
一種簡單的方法是實現繼承DropTargetAdapter類,這是一個實現了DropTargetListener接口的適配器,實現其中的drop方法。
該方法有一個DropTargetDropEvent對象的參數,drop里面調用順序如下
1.調用這個對象的acceptDrop方法,需要一個Int參數,使用DnDConstants (Drag and Drop常數類)里的常數
2.獲得dtde對象的getTransferable對象,在調用transferable的getTransferData方法。參數是DataFlavor.javaFileListFlavor(也是一個DataFlavor)。
DataFlavor涉及傳輸時一些信息,有些復雜,暫時沒太理解。
3.直接在控件里面new一個DropTargetAdapter對象即可。
Drag and Drop的問題簡單的說要涉及到兩個部分: Drag Source, Drop target和Transferable 即從哪里drag來的,
以及drop到哪里去, 以及傳輸的數據.
沒有進行深入了解,以下博客寫的比較詳細,有空看一看。
http://blog.sina.com.cn/s/blog_799d8220010196nj.html