支持拖拽文件到 JTextArea。

复制代码
package com.lesten.tools;

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
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;

public class SupportDragTextArea extends JTextArea implements DropTargetListener {
        private static final long serialVersionUID = 7247130270544835594L;
      
        public SupportDragTextArea() {  
        }  
          
        public void dragEnter(DropTargetDragEvent dtde) {              
        }  
      
        public void dragOver(DropTargetDragEvent dtde) {              
        }  
      
        public void dropActionChanged(DropTargetDragEvent dtde) {               
        }  
      
        public void dragExit(DropTargetEvent dtde) {                
        }
      
        public void drop(DropTargetDropEvent dtde) {
            this.setText("");    
            if(dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor)){  
                dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                try {
                    Transferable tr = dtde.getTransferable();  
                    Object obj = tr.getTransferData(DataFlavor.javaFileListFlavor);  
                    @SuppressWarnings("unchecked")
                    List<File> files = (List<File>)obj;  
                    for(int i = 0; i < files.size(); i++){  
                        append(files.get(i).getAbsolutePath());  
                    }  
                } catch (UnsupportedFlavorException ex) {  
                } catch (IOException ex) {
                }  
            } else if (dtde.isDataFlavorSupported(DataFlavor.stringFlavor) ) {
                dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
                try {
                    Transferable tr = dtde.getTransferable();  
                    String str=(String) tr.getTransferData(DataFlavor.stringFlavor);  
                    append(str);
                } catch (UnsupportedFlavorException ex) {        
                } catch (IOException ex) {        
                }  
            }
        }  
}
复制代码

支持拖拽的 JTextArea.   支持 mac 和 windows 平台。 走过几个坑,记录下

posted @   lesten  阅读(337)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示