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