• 支持拖拽文件到 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 平台。 走过几个坑,记录下

  • 相关阅读:
    [C#1] 2类型基础
    [C#2] 5迭代器
    [C#1] 6方法
    [C#1] 8数组
    [C#1] 12特性
    [C#1] 10事件
    [C#2] 2匿名方法
    实用代码JavaScript实用小函数一枚(深入对象取值)
    [C#1] 11接口
    实用代码C#获取本机网络适配器信息及MAC地址
  • 原文地址:https://www.cnblogs.com/lesten/p/10611098.html
Copyright © 2020-2023  润新知