swt实现文件图片拖拽上传


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

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


猜你喜欢

转载自blog.csdn.net/qq_29048719/article/details/77072848