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 平台。 走过几个坑,记录下

  • 相关阅读:
    封装tip控件
    Javascirpt中创建对象的几种方式
    使用Servlet上传文件
    Struts2 基本配置
    使用JQuery实现手风琴布局
    winform下自绘提示框风格窗体
    环形进度条
    Oracle中获取当前时间半小时前的时间
    JSTL+MyEclipse8.5+Tomcat配置
    使用CSS和jQuery实现对话框
  • 原文地址:https://www.cnblogs.com/lesten/p/10611098.html
Copyright © 2011-2022 走看看