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

  • 相关阅读:
    eclipse中jdk源码调试步骤
    [POJ2777] Count Color
    [HNOI2004] L语言
    [USACO08DEC] 秘密消息Secret Message
    The XOR Largest Pair [Trie]
    前缀统计 [Trie]
    于是他错误的点名开始了 [Trie]
    Palindrome [Manecher]
    兔子与兔子 [Hash]
    [CF985F] Isomorphic Strings
  • 原文地址:https://www.cnblogs.com/lesten/p/10611098.html
Copyright © 2011-2022 走看看