swt实现文件图片拖拽上传

来源:互联网 发布:mac软件太少 编辑:程序博客网 时间:2024/05/21 09:38


一,拖拽得到文件地址,根据地址得到文件

二,拖拽的 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");}});