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》 2.《Guide to SWT and JFace》 3. Drag and Drop 4. Drag and Drop in the Eclipse UI 相比起来,在对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过程的运作