`
tntxia
  • 浏览: 1507856 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

拖入文件的窗口

 
阅读更多
package com.tntxia.swingcommon;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
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.Box;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.tntxia.commonswing.MainFrame;

public class DragInFileFrame extends MainFrame implements DropTargetListener{
    
    private JTextField source = new JTextField(50);
    
    private JButton buttonConfirm = new JButton();
    
    private JLabel label = new JLabel();
    
    private Box box = Box.createVerticalBox();
    
    public JTextField getSource()
    {
        return source;
    }

    public void setSource(JTextField source)
    {
        this.source = source;
    }

    public JButton getButtonConfirm()
    {
        return buttonConfirm;
    }

    public void setButtonConfirm(JButton buttonConfirm)
    {
        this.buttonConfirm = buttonConfirm;
    }
    
    public JLabel getLabel()
    {
        return label;
    }

    public void setLabel(JLabel label)
    {
        this.label = label;
    }
    
    public Box getBox()
    {
        return box;
    }

    public void setBox(Box box)
    {
        this.box = box;
    }
    
    public DragInFileFrame(){
        
        Container contentPane = this.getContentPane();
        contentPane.setLayout(new FlowLayout());
        
        JPanel panel = new JPanel();
        
        panel.add(label);
        panel.add(source);
        box.add(panel);
        
        JLabel labelTip = new JLabel("可以手动输入路径 ,也可以把文件拖放到这个窗口");
        box.add(labelTip);
        
        // 设置拖入文件
        new DropTarget(contentPane, 3, this);
        
        // 设置拖入文件
        new DropTarget(source, 3, this);
        
        panel.add(buttonConfirm);
        contentPane.add(box);
    }

    /**
     * 
     */
    private static final long serialVersionUID = 3557138117709489934L;

    @Override
    public void dragEnter(DropTargetDragEvent dtde) {
        
    }

    @Override
    public void dragOver(DropTargetDragEvent dtde) {
        
    }

    @Override
    public void dropActionChanged(DropTargetDragEvent dtde) {
        
    }

    @Override
    public void dragExit(DropTargetEvent dte) {
        
    }

    @Override
    public void drop(DropTargetDropEvent dtde) {
        Iterator iterator;
        dtde.acceptDrop(dtde.getDropAction());  
        try {
            iterator = ((List)dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor)).iterator();
            int numFiles = 0;
            File inFile = null;
            while(iterator.hasNext())
            {
                if(numFiles++ == 0)
                {
                    inFile = (File)iterator.next();
                    continue;
                }
                break;
            }
            
            String filePath = inFile.getAbsolutePath();
            source.setText(filePath);
            
        } catch (UnsupportedFlavorException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 入口函数
     * @param args
     */
    public static void main(String args[]){
        
    }

}

 

0
1
分享到:
评论

相关推荐

    文件拖动并打开文件,将文件拖入窗口即可打开文件

    当用户将文件从资源管理器或其他位置拖放到我们的应用程序窗口时,Windows会发送一个WM_DROPFILES消息。我们需要注册一个消息处理函数来处理这个特定的消息。 3. **HDROP结构体**: WM_DROPFILES消息的wParam参数...

    C# 拖入文件获取路径

    在C#编程中,"拖入文件获取路径"是一个常见的功能,它允许用户通过鼠标拖放操作将外部文件或文件夹直接放入应用程序界面,从而获取这些文件或文件夹的完整路径。这一功能在许多类型的软件中都有应用,比如文件管理器...

    vc实现拖入文件打开

    总结来说,实现“vc实现拖入文件打开”的核心步骤包括启用拖放支持、实现IDropTarget接口、处理IDataObject中的文件数据以及在文件被拖放时显示文件路径。这个过程涉及到了MFC的消息处理机制、COM组件接口以及...

    Win32汇编实现可接受拖放文件的窗口

    本项目"Win32汇编实现可接受拖放文件的窗口"专注于利用Win32 API来创建一个窗口,该窗口能够接收用户通过拖放操作传递的多个文件,并在接收到文件时显示相关信息。 首先,我们需要理解Windows消息机制。在Win32 API...

    实现QTabWidget拖出拆分窗口,拖入合并窗口,固定标签,关闭标签菜单源码

    在实际的软件开发中,用户有时需要更加灵活的操作方式,比如将标签拖出形成独立的窗口,或者将窗口拖入到`QTabWidget`中进行合并,甚至固定某些标签不被关闭,以及提供关闭标签的菜单选项。这些功能在一些复杂的桌面...

    易语言将窗口内文件拖到外面并写出

    易语言将窗口内文件拖到外面并写出源码,将窗口内文件拖到外面并写出,子程序1,GetHandle,setHOOK,GetModuleHand,Unhook,MoveMemory,取窗口标题_,取指定点窗口句柄_,取父窗口_,取实例句柄_,载入图象_,创建指针_,清除...

    .net写的 类似QQ的把文件拖到窗体内

    标题中的".net写的 类似QQ的把文件拖到窗体内"指的是使用.NET框架开发的一款应用程序,功能类似于腾讯QQ,允许用户将文件通过拖放操作直接拖入程序窗口中。这一特性在很多即时通讯软件中常见,方便用户快速分享或...

    支持从文件浏览器里拖入文件(4KB)...

    "支持从文件浏览器里拖入文件(4KB)"的标题表明这个项目是关于实现VB应用程序中的拖放功能,特别是接收来自文件浏览器的文件。这个小型项目可能只有4KB大小,但它的价值在于展示了如何在有限的代码量内实现这一交互。...

    量删除照片EXIF信息的软件,将照片直接拖入软件窗口,“Clear”一下就完成操作。Stripper.zip

    标题中的“量删除照片EXIF信息的软件,将照片直接拖入软件窗口,“Clear”一下就完成操作”指的是一个能够批量处理照片,移除其中的EXIF信息的工具。这款软件名为“Stripper”,其主要功能是清理照片的元数据,特别...

    易语言实现文件拖放

    易语言实现文件拖放源码,实现文件拖放,子程序1,子程序2,禁止拖放,拖放文件,拖放回调,拖放结果,取文件名,取文件路径,置窗口特征,执行窗口程序,回调显示,设置窗口是否接受拖放,取被拖放文件数,结束拖放

    实现拖动文件获取路径

    在Windows Presentation Foundation (WPF) 中,实现拖放(Drag and Drop)功能可以让用户通过简单的操作将文件从桌面或其他位置直接拖入应用界面,从而获取这些文件的路径。这一特性在许多应用程序中都非常实用,...

    易语言超级列表框拖入快捷方式

    在IT领域,尤其是在编程实践中,...通过以上步骤,我们可以构建出一个具备拖入快捷方式功能的易语言程序,让用户能够更便捷地管理和操作各种文件或程序。这样的功能对于简化用户操作,提升应用的实用性具有重要意义。

    AE黑鱼工具箱-一Win10无法拖入文件修复.rar

    4、再次尝试拖入素材到项目窗口,成功(说明系统刚刚已经自动解决了兼容性问题); 5、返回程序兼容新疑难解答,点击下一步,系统询问问题解决了吗,我们点击“是,为此程序保存这些设置”; 6、稍等片刻,显示不兼容...

    MFC 拖曳文件获得文件路径

    `OnDropFiles`函数会在用户释放鼠标时被调用,此时文件已经被拖放到窗口上,我们需要在这个函数中获取文件路径并进行处理。`OnDragEnter`和`OnDragOver`用于处理拖动进入和在窗口上移动的过程,`OnDragLeave`则是在...

    Win7下飞秋V2.4无法通过拖拽文件来发送文件

    当用户尝试将文件从桌面或其他位置直接拖放到飞秋的聊天窗口中时,文件没有如预期那样被发送,而是无法被识别或接收。这种情况只在飞秋V2.4版本的特定环境下出现,即当飞秋的快捷方式位于桌面上时。 问题分析: 这...

    winfrom程序中将图片拖入picturebox就能打开显示

    MessageBox.Show("只能拖入图片"); } } ``` ##### 步骤5:备用方案——使用OpenFileDialog 作为备用方案,还可以使用`OpenFileDialog`控件让用户选择图片文件,这种方法虽然不如拖拽直观,但在某些情况下可能更...

    一文讲清Python PyQt5的控件如何实现拖放获取文件路径(markdown)

    在这个新的类`DragDropLineEdit`中,我们在`dragEnterEvent`中检查了拖入的数据是否包含URLs,如果有,我们就接受这个动作。在`dropEvent`中,我们获取第一个URL的本地文件路径,并将其设置为QLineEdit的文本。 ...

    VB6实现文件拖放功能(详细说明方法)

    这个功能允许用户通过鼠标拖动文件到应用程序窗口来传递数据,极大地提升了交互性。以下将详细介绍如何在VB6.0中实现文件拖放功能,包括涉及到的关键API调用和实例代码。 首先,我们需要引入Windows API函数,它们...

    计计之城MAX工具箱 拖入MAX窗口

    3自动备份保存MAX文件 4调入阿酷插件 5断开关联 6顶视图旋转90度或-90度 7获去材质 8物体结组 9忽略组 10挤出到 11挤出面板 12填充阵列 13材质选择 工具栏C(工具)">室内外效果图制作神器! 工具栏A...

    vb 实现文件拖拽显示文件路径

    这允许外部对象被拖放到该控件上。 3. **编写DragEnter事件处理程序** 当鼠标进入TextBox区域并且按住鼠标键时,DragEnter事件会被触发。我们需要在此事件中设置DragEventArgs的`Effect`属性,以允许或拒绝拖放...

Global site tag (gtag.js) - Google Analytics