posts - 18, comments - 15, trackbacks - 0, articles - 0

SWT中的拖放支持 - 拖放原理概述

SWT中有关拖放操作的类都在org.eclipse.swt.dnd包中。该包中主要的接口和类如下所示:

类名                                    功 能 描 述

Clipboard                          剪贴板类,可以实现对剪贴板的操作

DND                                类似于SWT类,封装了拖放时所用的一些常量

DragSource                       拖放源类,可将一个控件定义为拖放源

DropTarget                       拖放目标类,可将一个空间定义为拖放目标

DragSourceListen和          拖放源控件时所触发的事件,触发事件的具体信息通过DragSourceEvent传递过来
DragSourceAdapter

DropSourceListen和          拖放目标控件时所触发的事件,触发事件的具体信息通过DragTargetEvent传递过来
DropSourceAdapter

Transfer                             数据传输类,用于将Java数据转换为系统本地的数据,反之亦然。通常用于拖
                                         放操作和剪贴板操作。通常使用其子类 TextTransfer类、FileTransfer类
                                         和RTFTransfer类等

看似简单的拖放操作,其实过程相当复杂,现在就将一个拖放过程分解开来,分析一下拖放的过程。
1、要有一个拖放源,也就是”拖的是什么“。简单的理解就是可以进行拖放的控件。只有光标进入到可拖放
控件的区域,才可以开始拖放操作。SWT中使用DragSource类来定义一个拖放源对象。
2、还要有一个拖放目标,也就是”放到哪里“。简单的理解就是可接受源的目标控件。只有当光标进入到目标控件的区域时,才可以进行拖放的操作。SWT中使用DragTarget类来定义一个拖放目标对象。
3、要在拖和放操作之间搭建一个桥梁,将拖的数据放到目标对象中。

拖放操作无非是将源的数据放置到目标对象中,SWT中的处理是在拖的过程中将Java的数据转化为本地保存的全局变量数据,然后在放的过程中,再从本地保存的全局变量中将数据取出。SWT中使用Transfer类来定义一个转化数据的过程。

要想理解拖放的全过程,关键是要理解3个概念:
拖放源(DragSource)、传输数据(Transfer)、拖放目标(DragTarget)。

只有注册用户登录后才能发表评论。


网站导航: