swt实现文件图片拖拽上传

本文介绍如何在SWT框架中实现文件的拖拽功能,并通过示例代码展示如何设置拖拽监听器以实现文件的接收与处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值