一,拖拽得到文件地址,根据地址得到文件
二,拖拽的 swt空间内不必须要有一个可以点击的项目才能实现
例如table内可以放tableitem
以下是代码,table可以换成其他的,拖拽后的处理也可以是爱他的
int operations = DND.DROP_DEFAULT | DND.DROP_COPY;
DropTarget dropTarget = new DropTarget(table1, operations);
dropTarget.setTransfer(new Transfer[] { FileTransfer.getInstance() });
dropTarget.addDropListener(new DropTargetListener() {
public void dragEnter(DropTargetEvent arg0) {
}
public void dragLeave(DropTargetEvent arg0) {
}
public void dragOperationChanged(DropTargetEvent arg0) {
// 这里可以做拖放同时按Ctrl之类的控制键改变操作的处理
}
public void dragOver(DropTargetEvent arg0) {
arg0.detail = DND.DROP_COPY;
// 这里比较重要,detail原值为DND.DROP_NONE改变detail才能让drop事件进行下去
}
public void drop(DropTargetEvent arg0) {
TableItem item = (TableItem) arg0.item;
if (item == null) {
arg0.detail = DND.DROP_NONE;
return;
}
if (FileTransfer.getInstance().isSupportedType(arg0.currentDataType)) {
String[] files = (String[]) arg0.data;
if (files != null && files.length > 0) {
String p=files[0];
Image image = new Image(Display.getDefault(), p);
table1.setBackgroundImage(new Image(display, image.getImageData().scaledTo(200, 200)));
text.setText(p);
System.out.println(p);
}
}
}
public void dropAccept(DropTargetEvent arg0) {
// 最后一次取消drop操作的机会
System.out.println("dragAccept");
}
});