链接:http://www.eclipse.org/swt/snippets/

 

• Drag and Drop
o drag text between two labels
o drag leaf items in a tree
o define my own data transfer type
o define a second data transfer type that subclasses the first
o define a default operation (in this example, Copy)
o determine data types available (win32 only)
o determine data types available (motif only)
o make a dropped data type depend on a target item in table
o drag text between two StyledText widgets
o drag text within a StyledText widget (with drag image)
o detect drag in a custom control
o drag and drop a URL
o drag and drop text between SWT and Swing
o drag and drop an object with a custom data transfer type from SWT to AWT/Swing

 

我的记录:

1.   SWTWork/ch10/DragTree,注意对TreeItem的操作,有可以他的父亲为Tree,也有可以使TreeItem。使用getParent或者getParentItem的方法。

2.   树的递归生成还是挺方便的,要是仅仅为了以一种树的显示,就不需要TreeView了,要是需要频繁数据操作才需要那种View。

3.   SWTWork/ch10/ DragDropSample是个Table拖拽的例子。

4.   【好】Snippet171,定义了一个MyTransfer,继承ByteArrayTransfer类,当然在ByteArrayTransfer中的help中就有。学习将数据转化为字节数组的方法,注意遇到字符串的时候要首先输出字符串的长度,long就不需要、int也不需要因为这个是基本的数据类型,要不然字符串不知道到什么地方结束。读的时候正好相反。这里一下实现了两个Transfer,MyTransfer1和MyTransfer2,其中MyTransfer2是MyTransfer1的子类,源是支持拖动MyTransfer2,而它的拖动目标控件一个接受MyTransfer1,一个接受MyTransfer2.

5.   注意拖动目标控件只要能够接受你拖动的类型就可以实现拖动了,SWTWork/ch10/DragTree例子可以拖动到系统的其他地方,只要它接受字符串;下面就是我中Tree上面拖过的:如{000 11111测试目录}

6.   Snippet282,ImageTransfer的使用,首先打开一个图像,这个图形到ImageButton上了,然后copy,这个图像和途径就到了剪贴板上去了,clear就把ImageButton的内容清空了,然后在paste,就可以讲剪贴板里面的内容再一次放的ImageButton和ImageText上去了。

7.   Snippet185,根据目标控件能够接受的给拖放的数据。注意:DragSourceEvent的dataType是DropTarget能够接受的数据类型,而DropTargetEvent的dataTypes则是DragSource能够提供的数据的类型,这是个数组,可以提供的有好多。通过定义currentDataType,能够确定解释什么类型的拖放数据,也就是说主动权是在DragSource一方。

8.   Snippet210,一个Text拖动到另一个Text。

9.   Snippet257,一个Text内的拖动。设置了拖动时候的图标,会在鼠标位置显示出来。StyledText没有删除的方法用《text.replaceTextRange(selection.x + delta, length, "");》这个方法。文件内部的变量没有用全局变量,只是记住了,选择的位置了。这种方法就不好和系统交互了,可以资源用的少些。

10.  Snippet259,监听拖拽事件。这个类里面实现了一个自己的list,MyList,是继承自Canvas,可学习自己定制SWT控件。gc.stringExtent、checkWidget ()。

11.  Snippet284,URLTransfer类型的拖动。

12.  Snippet300,SWT中的Text,拖动到Swing中去,Swing中的Text不需要注册,直接是可以接受TextTransfer的。

13.  Snippet319,也定义了一个新的拖拽类型。也是SWT到Swing,不过这次复杂一些。

14.  Snippet78,两个Label自己拖来拖去。

15.  Snippet79,也是定义一个拖拽类型,就是支持拖拽一个特殊的数据类。

16.  Snippet83,建了一个白板,在win上面拖东西,可以看出这次拖拽支持一些什么操作。

17.  Snippet84,一个label先一个Text拖拽,操作后,字符变了,看你有没有完成操作。

18.  Snippet91,这个还不错,Tree的拖动,只有叶子节点可以拖动,另外,放在哪儿还有一个横线提示,不错。

 

还有 关于剪贴板:

1.   Clipboard,是SWT本地拖拽的关键吧。

2.   Clipboard是系统唯一的剪贴板。

3.   Snippet122,剪贴板的使用,弹出菜单,复制,粘贴,向剪贴板中存放内容,要同时告诉剪贴板放入内容的类型,这个类型必须org.eclipse.swt.dnd.Transfer;复制和粘贴通过menuShown事件,在弹出的时候判断某个菜单项能不能用,复制在选择了字符后才有用,粘贴在剪贴板有内容,且内容是字符串才有用,复制一个快捷方式,粘贴就没用了。

4.   常用的Transfer 类型有TextTransfer、RTFTransfer、ImageTransfer、FileTransfer;RTFTransfer表示RTF格式的一些数据;