Java Swing GUI文件拖拽
2009-12-29 19:40
405 查看
为了方便,有时我们需要直接将本地文件或字符或图片直接拖拽到图形上,让组件自动打开拖拽的文件。基于这种思想,我写了如下代码实现这个拖拽监听的功能。
1.UI源码
这段源码的效果如下:里面的两个文件名是我拖拽进去的。
2.实现监听的类
这个类的主要作用是将监听器和组件关联起来。
支持二个类联合就可以实现拖拽了。
1.UI源码
package ibees.desktop; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.WindowConstants; /** * * @author zhang xiaojin * 演示Swing文件拖拽 */ public class DropDragDemo { public static void main(String[] args){ JFrame frame = new JFrame("文件拖拽Demo"); frame.setSize(500, 400); frame.setResizable(false); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setBorder(BorderFactory.createTitledBorder("文件拖拽演示")); JTextArea textArea = new DropDragSupportTextArea(); JScrollPane jsp = new JScrollPane(); jsp.setViewportView(textArea); textArea.setColumns(40); textArea.setRows(20); panel.add(jsp); frame.add(panel); frame.setVisible(true); } }
这段源码的效果如下:里面的两个文件名是我拖拽进去的。
2.实现监听的类
package ibees.desktop; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; 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.List; import javax.swing.JTextArea; /** * * @author Administrator */ public class DropDragSupportTextArea extends JTextArea implements DropTargetListener{ private DropTarget dropTarget; public DropDragSupportTextArea() { //注册DropTarget,并将它与组件相连,处理哪个组件的相连 //即连通组件(第一个this)和Listener(第二个this) dropTarget = new DropTarget(this,DnDConstants.ACTION_COPY_OR_MOVE, this, true); } /** * 拖入文件或字符串,这里只说明能拖拽,并未打开文件并显示到文本区域中 */ public void dragEnter(DropTargetDragEvent dtde) { DataFlavor[] dataFlavors = dtde.getCurrentDataFlavors(); if(dataFlavors[0].match(DataFlavor.javaFileListFlavor)){ try { Transferable tr = dtde.getTransferable(); Object obj = tr.getTransferData(DataFlavor.javaFileListFlavor); List<File> files = (List<File>)obj; for(int i = 0; i < files.size(); i++){ append(files.get(i).getAbsolutePath()+"/r/n"); } } catch (UnsupportedFlavorException ex) { } catch (IOException ex) { } } } public void dragOver(DropTargetDragEvent dtde) { } public void dropActionChanged(DropTargetDragEvent dtde) { } public void dragExit(DropTargetEvent dte) { } public void drop(DropTargetDropEvent dtde) { } }
这个类的主要作用是将监听器和组件关联起来。
支持二个类联合就可以实现拖拽了。
相关文章推荐
- Java的swing界面拖拽文件至文本框显示文件路径
- java之GUI文件对话框javax.swing.JFileChooser
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- atitit.D&D drag&drop拖拽文件到界面功能 html5 web 跟个java swing c#.net c++ 的总结
- Swing and SWT: A Tale of Two Java GUI Libraries
- 细说Java GUI:AWT,SWT,Swing
- Java笔记(10)-图形界面设计、Swing、窗口、JFrame、常用组件和布局、处理事件、MVC结构、对话框、GUI
- Firefox下拖拽客户端文件到浏览器达到上传效果的实现(java例)
- [JAVA-GUI]Swing里JPopMenu中JMenuItem的点击事件
- 基于Java swing的纯文件选择器,省略按钮,运行程序直接进入文件选择框
- 细说Java GUI:AWT,SWT,Swing
- Java Notes: GUI Development (Swing)
- Java GUI中实现文件拷贝
- Java按位置解析文本文件(使用Swing选择文件)
- java基础 GUI (列出给定目录下的所有文件名称)
- [JAVA]Swing、事件监听、文件的初级综合。简易图片浏览器,逸雨清风XIUXIU。
- 【java swing 编程】文件替换小秘书(六)
- java swing 文件选择,设置默认文件选择路径,桌面路径
- 细说Java GUI:AWT,SWT,Swing
- 第一个Java SWing GUI程序