`

DropTargetListener 接收拉拽对象监听器

阅读更多
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.swing.*;

public class DragAndDrop extends JFrame implements DropTargetListener {
	private static final long serialVersionUID = 1L;
	JLabel cmdLabel = new JLabel("你拖入的文件地址是:");

	public DragAndDrop() {
		Container CP = getContentPane();
		CP.add(cmdLabel, BorderLayout.WEST);
		setSize(300, 60);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLocation(200, 50);
		setTitle("读取命令行输入");
		new DropTarget(this, DnDConstants.ACTION_COPY_OR_MOVE, this);
		setVisible(true);
	}

	public void dragEnter(DropTargetDragEvent dtde) {

	}

	public void dragExit(DropTargetEvent dte) {

	}

	public void dragOver(DropTargetDragEvent dtde) {

	}

	public void drop(DropTargetDropEvent dtde) {
		try {
			if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
				dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
				List<?> list = (List<?>) (dtde.getTransferable()
						.getTransferData(DataFlavor.javaFileListFlavor));
				Iterator<?> iterator = list.iterator();
				while (iterator.hasNext()) {
					File f = (File) iterator.next();
					this.cmdLabel.setText("你拖入的文件是:" + f.getAbsolutePath());
				}
				dtde.dropComplete(true);
				// this.updateUI();
			} else {
				dtde.rejectDrop();
			}
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} catch (UnsupportedFlavorException ufe) {
			ufe.printStackTrace();
		}
	}

	public void dropActionChanged(DropTargetDragEvent dtde) {
	}

	public static void main(String[] args) {
		DragAndDrop c = new DragAndDrop();
		if (args.length != 0)
			c.cmdLabel.setText(args[0]);
	}
}

 

分享到:
评论

相关推荐

    java拖动对象程序

    6. **监听DropTarget**:在目标组件上设置`DropTarget`监听器,以便在目标组件上接收拖放事件。 7. **处理DropTargetDropEvent**:在`DropTargetListener`的`drop(DropTargetDropEvent dtde)`方法中,处理数据的...

    Swing组件的DnD拖拽深度分析

    在监听器中,你需要实现数据的包装为`Transferable`对象,处理拖动开始和结束的逻辑,以及接收和处理数据的方法。 总的来说,Swing组件的DnD功能提供了强大的交互能力,而其背后是复杂的线程管理和事件处理机制。...

    java swing控件的drag和drop的实现方法

    总结来说,Java Swing中的拖放功能涉及多个组件和接口的协同工作,通过创建`DragSource`和`DropTarget`,注册监听器,并定义数据传输方式,我们可以实现丰富的用户交互体验。实际项目中,你可能需要根据具体需求对...

    java paintComponent 拖拽操作

    当用户触发拖动操作时,这个监听器会被调用。 ```java ds.addDragGestureListener(new DragGestureListener() { // 实现相关方法,如dragGestureRecognized() }); ``` 3. **设置Transferable**:定义一个`...

    拖拽实现源代码DragPictrue

    你可以通过设置组件的`setDragEnabled(true)`来启用拖放功能,并使用`addDropTargetListener`添加监听器。 在`DragPictrue.java`的实现中,代码可能会创建一个包含图片的组件,如JLabel,然后为它设置一个`...

    计算机二级(java)机试136页.pdf

    对话框的可见性由 `dlg.setVisible(true)` 控制,而 `dlg.addWindowListener()` 用于添加一个窗口监听器,当对话框关闭时执行相应的操作。 4. **窗口监听器**: - `WindowAdapter` 是一个默认的窗口监听器,它可以...

    ASWing实现中拖放

    在ASWing中实现拖放,你需要理解组件、事件监听器和拖放相关的API。 1. **拖放API**:在ASWing中,拖放功能的实现依赖于Java Swing的`TransferHandler`类。你需要创建一个自定义的`TransferHandler`子类,定义拖放...

    Swing拖拽(文件拖入JEditorPane)

    JEditorPane不直接支持文件内容的拖放操作,但可以通过自定义监听器实现。你需要创建一个DragGestureListener来响应拖动手势,然后创建一个TransferHandler来处理数据传输。当文件被拖入时,TransferHandler可以...

    eclipse rcp drag&drop

    `DropTarget`类提供了注册监听器的方法,并定义了数据是否可以被接受的规则。 4. **DataFlavor**: 数据格式的描述,对应于Java中的`DataFlavor`,在Eclipse RCP中通过`Transferable`接口进行数据传输。确保`Drag ...

    dnd.beta

    - `DropTargetListener`: 监听器接口,定义了处理拖放事件的方法。 - `DropTargetEvent`: 当数据被拖放到一个目标时触发的事件。 ##### 2. The DragGesture API 在拖放操作中,“拾取”(Drag)同样重要。`java.awt....

    JTree的例子,可以拖动节点

    在`JTree`中实现拖放功能,我们需要利用Java Swing提供的`TransferHandler`类和一些相关的事件监听器。 1. **创建`JTree`实例**: 首先,你需要创建一个`DefaultMutableTreeNode`作为树的数据模型,并将其设置到`...

    java记事本

    这涉及到注册监听器对象到相应的组件上,以便在特定事件发生时执行相应的代码。 4. **文件I/O操作**:读取和写入文本文件是记事本应用的核心功能。Java提供了丰富的File类和InputStream/OutputStream类族,用于处理...

    Java鼠标拖拽功能.7z

    它们各自需要注册监听器(`DragSourceListener`和`DropTargetListener`)来处理拖放操作的不同阶段。 6. **Transfers和Flavors**:在拖放操作中,数据通常以`Transferable`对象的形式传递,它可以包含多种格式(即...

    DragImagesController:一次拖动多张图像

    综上所述,“DragImagesController:一次拖动多张图像”涉及到的技术点包括Java Swing的拖放机制、`TransferHandler`、`DragSource`、`DropTarget`、数据传输对象的封装、事件监听器的实现、多图片处理逻辑以及用户...

    Java图形设计卷2swing

    4. **事件处理**:Swing使用事件监听器接口来处理用户交互。例如,可以添加ActionListener到按钮,当按钮被点击时触发特定的事件处理方法。事件类如ActionEvent、ItemEvent、MouseEvent等,对应不同的用户行为。 5....

    swing之拖拽功能DragDemo

    为了使拖放更加直观,你可能还需要实现`DragSourceDragEvent`和`DropTargetDragEvent`的监听器,以控制拖动过程中的视觉反馈,比如改变鼠标形状、显示拖动阴影等。此外,`DropTargetDropEvent`的监听器用于处理数据...

    SWT JFace 拖曳效果

    `DragSource`是源对象,即用户可以从中拖动数据的组件,而`DropTarget`则是目标对象,可以接收被拖动的数据。 在给定的代码示例中,我们看到一个名为`WordJumbles`的类,它创建了一个带有拖放功能的简单应用程序。...

    Java 拖拽文件到文本框

    在Java编程中,拖放(Drag and Drop, DnD)功能是一种常见的用户交互方式,允许用户通过鼠标操作将一个对象从一处拖动到另一处。在这个场景中,标题"Java 拖拽文件到文本框"指的是实现用户能够通过拖放操作将本地...

    DRAG-and-DROP:一个简单的java程序游戏,显示JButtons的拖放

    在实现拖放功能时,Java使用了DragSource和DropTarget接口,以及DragGestureListener、DragSourceListener和DropTargetListener等监听器。当用户开始拖动一个对象时,DragGestureListener会触发,然后DragSource开始...

    计算机二级(java)机试136扫描.pdf

    按钮的文本为"显示Dialog",并且设置了按钮的事件监听器,使其在被点击时调用`actionPerformed()`方法。 - `actionPerformed()`方法中,通过设置`dlg.setVisible(true)`显示了对话框`dlg`。 - 对话框`dlg`是一个`...

Global site tag (gtag.js) - Google Analytics