SWT下实现Drag and Drop(DND)学习笔记(写作中...)

1.概况介绍

        Drag&Drop(后简称DND)可以增强程序的可操作性,提高程序的可视化操作能力。从而提高程序的吸引力。(表面功夫也是很重要的)
        在SWT下实现DND主要涉及三个类和两个接口以及两个事件类:
        类:         
                org.eclipse.swt.dnd.DragSource 
                 org.eclipse.swt.dnd.DropTarget 
                org.eclipse.swt.dnd.Transfer
        接口:    
                org.eclipse.swt.dnd.DragSourceListener
                org.eclipse.swt.dnd.DropTargetListener
        事件类:
                
org.eclipse.swt.dnd.DropTargetEvent
                org.eclipse.swt.dnd.DragSourceEvent
            
        我学习的资料:
              1. 《SWT/JFace in Action》
                        http://chinateam.myrice.com/matrix/java/j2se/java_ide/Eclipse%20in%20Action.pdf
              2.《Guide to SWT and JFace》
                        http://www.fixdown.com/soft/21244.htm
              3.  Drag and Drop                         
                        http://www.eclipse.org/articles/Article-SWT-DND/DND-in-SWT.html#_dt10D
              4.  Drag and Drop in the Eclipse UI
                        http://www.eclipse.org/articles/Article-Workbench-DND/drag_drop.html
        相比起来,在对DND的说明方面,后两个文献要详尽的多。如果大家的英文比较好,我建议还是直接看后两个文献。


2.Drag and Drop的实现过程
        Drag&Drop由两个步骤组成:Drag和Drop过程(废话,不过为了表述清楚还是说一下吧。)。
2.1 Drag过程
    要实现Drag过程的步骤如下。
1.确定DND操作源组件,并声称相应的DragSource。
        DragSource类和后面要提到的DropTarget都属于封装类,构造函数的参数表均为 (Control control, int style)。
        通过将一个Control传递给DragSource的构造函数,一个组件可以被定为一个DND操作源,构造函数的第二个参数表示DND操作源所允许的操作方式。需要注意的是,不能将一个组件指定为多个DND操作源,否则会产生SWTError[3](比较严重)。换句话说,一个组件只能为DND操作提供一类数据。
        上面涉及到的style参数决定了DND操作接收者可以对传送过去的数据采取的操作方式,style的值可以是 DND.DROP_COPY, DND.DROP_MOVE 和DND.DROP_LINK 或者是三者中的按位或的结果。注意,这三个值是org.eclipse.swt.dnd.DND的静态成员。
2.确定DND操作传输的数据的类型
3.设置监听器,控制Drag过程的运作

你可能感兴趣的:(Eclipse,swt,eclipse,action,ui)