本人程序是这样的,swing程序,有一个列表,放的是文件名,从操作系统拖文件到列表里,这个操作是完成了,列表能把拖进来的文件名显示出来。
现在,我想把文件名拖到操作系统的目录里,然后目录里会生成一个同名文件,并且能把一些内容存到这个文件里。请问,有没有办法实现?

解决方案 »

  1.   

    不需要得到拖到目录时的目录路径你既然已经实现了从文件系统中拖到swing组件中,那么你应该已经有了实现Transferable接口的传送类
    假定他叫A
    那么类似的,你的拖曳类中应该实现DragGestureListener接口
    其中有一个dragGestureRecognized(DragGestureEvent dragGestureEvent)方法,你要给出具体实现
    需要你知道swing组件中你选定的被拖曳的file的原path
    用这个path构造一个A的对象a
    然后
    dragGestureEvent.startDrag(DragSource.DefaultCopyDrop,a,this);
    就可以了,不需要显式地得到target点的path
      

  2.   


    实际上,我的程序里的文件是存在ftp上的,列表里也就是ftp的目录列表。
    现在我已经按你说的实现了DragGestureListener,只是不知道该如何把文件保存到本地来。我把选中的ftp文件读到了StringBuffer里,用它构造了Transferable类,但是dragGestureEvent.startDrag(DragSource.DefaultCopyDrop,a,this);之后,我不知道它到底存到什么地方去了。不知道有没有其它什么更好的方法。
      

  3.   

    谁能来解释一下DragGestureListener,Transferable这些个的原理?
      

  4.   


    这个问题解决了,在DragGestureListener的dragGestureRecognized方法里先读取要传到本地的文件,存入File变量,用starDrag把这个File变量传给Transferable去构造。
    Transferable里的getTransferData方法把传进来的File变量放到list里返回出来就可以了。系统会自行判断数据是什么。