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]);
}
}
分享到:
相关推荐
6. **监听DropTarget**:在目标组件上设置`DropTarget`监听器,以便在目标组件上接收拖放事件。 7. **处理DropTargetDropEvent**:在`DropTargetListener`的`drop(DropTargetDropEvent dtde)`方法中,处理数据的...
在监听器中,你需要实现数据的包装为`Transferable`对象,处理拖动开始和结束的逻辑,以及接收和处理数据的方法。 总的来说,Swing组件的DnD功能提供了强大的交互能力,而其背后是复杂的线程管理和事件处理机制。...
总结来说,Java Swing中的拖放功能涉及多个组件和接口的协同工作,通过创建`DragSource`和`DropTarget`,注册监听器,并定义数据传输方式,我们可以实现丰富的用户交互体验。实际项目中,你可能需要根据具体需求对...
当用户触发拖动操作时,这个监听器会被调用。 ```java ds.addDragGestureListener(new DragGestureListener() { // 实现相关方法,如dragGestureRecognized() }); ``` 3. **设置Transferable**:定义一个`...
你可以通过设置组件的`setDragEnabled(true)`来启用拖放功能,并使用`addDropTargetListener`添加监听器。 在`DragPictrue.java`的实现中,代码可能会创建一个包含图片的组件,如JLabel,然后为它设置一个`...
对话框的可见性由 `dlg.setVisible(true)` 控制,而 `dlg.addWindowListener()` 用于添加一个窗口监听器,当对话框关闭时执行相应的操作。 4. **窗口监听器**: - `WindowAdapter` 是一个默认的窗口监听器,它可以...
在ASWing中实现拖放,你需要理解组件、事件监听器和拖放相关的API。 1. **拖放API**:在ASWing中,拖放功能的实现依赖于Java Swing的`TransferHandler`类。你需要创建一个自定义的`TransferHandler`子类,定义拖放...
JEditorPane不直接支持文件内容的拖放操作,但可以通过自定义监听器实现。你需要创建一个DragGestureListener来响应拖动手势,然后创建一个TransferHandler来处理数据传输。当文件被拖入时,TransferHandler可以...
`DropTarget`类提供了注册监听器的方法,并定义了数据是否可以被接受的规则。 4. **DataFlavor**: 数据格式的描述,对应于Java中的`DataFlavor`,在Eclipse RCP中通过`Transferable`接口进行数据传输。确保`Drag ...
- `DropTargetListener`: 监听器接口,定义了处理拖放事件的方法。 - `DropTargetEvent`: 当数据被拖放到一个目标时触发的事件。 ##### 2. The DragGesture API 在拖放操作中,“拾取”(Drag)同样重要。`java.awt....
在`JTree`中实现拖放功能,我们需要利用Java Swing提供的`TransferHandler`类和一些相关的事件监听器。 1. **创建`JTree`实例**: 首先,你需要创建一个`DefaultMutableTreeNode`作为树的数据模型,并将其设置到`...
这涉及到注册监听器对象到相应的组件上,以便在特定事件发生时执行相应的代码。 4. **文件I/O操作**:读取和写入文本文件是记事本应用的核心功能。Java提供了丰富的File类和InputStream/OutputStream类族,用于处理...
它们各自需要注册监听器(`DragSourceListener`和`DropTargetListener`)来处理拖放操作的不同阶段。 6. **Transfers和Flavors**:在拖放操作中,数据通常以`Transferable`对象的形式传递,它可以包含多种格式(即...
综上所述,“DragImagesController:一次拖动多张图像”涉及到的技术点包括Java Swing的拖放机制、`TransferHandler`、`DragSource`、`DropTarget`、数据传输对象的封装、事件监听器的实现、多图片处理逻辑以及用户...
4. **事件处理**:Swing使用事件监听器接口来处理用户交互。例如,可以添加ActionListener到按钮,当按钮被点击时触发特定的事件处理方法。事件类如ActionEvent、ItemEvent、MouseEvent等,对应不同的用户行为。 5....
为了使拖放更加直观,你可能还需要实现`DragSourceDragEvent`和`DropTargetDragEvent`的监听器,以控制拖动过程中的视觉反馈,比如改变鼠标形状、显示拖动阴影等。此外,`DropTargetDropEvent`的监听器用于处理数据...
`DragSource`是源对象,即用户可以从中拖动数据的组件,而`DropTarget`则是目标对象,可以接收被拖动的数据。 在给定的代码示例中,我们看到一个名为`WordJumbles`的类,它创建了一个带有拖放功能的简单应用程序。...
在Java编程中,拖放(Drag and Drop, DnD)功能是一种常见的用户交互方式,允许用户通过鼠标操作将一个对象从一处拖动到另一处。在这个场景中,标题"Java 拖拽文件到文本框"指的是实现用户能够通过拖放操作将本地...
在实现拖放功能时,Java使用了DragSource和DropTarget接口,以及DragGestureListener、DragSourceListener和DropTargetListener等监听器。当用户开始拖动一个对象时,DragGestureListener会触发,然后DragSource开始...
按钮的文本为"显示Dialog",并且设置了按钮的事件监听器,使其在被点击时调用`actionPerformed()`方法。 - `actionPerformed()`方法中,通过设置`dlg.setVisible(true)`显示了对话框`dlg`。 - 对话框`dlg`是一个`...