• Java实现最简单的拖拽代码示例


    如题,Swing中实现拖拽功能,代码很简单,都有注释,自己看,运行效果如下图:

    代码:

    package com;
    
    import java.awt.*;
    import java.awt.datatransfer.DataFlavor;
    import java.awt.dnd.DnDConstants;
    import java.awt.dnd.DropTarget;
    import java.awt.dnd.DropTargetAdapter;
    import java.awt.dnd.DropTargetDropEvent;
    import java.io.File;
    import java.util.List;
    import javax.swing.*;
    
    /**
     * 最简单的Java拖拽代码示例
     * @author 刘显安
     * 2013年1月24日
     */
    public class DragTest extends JFrame
    {
        
        JPanel panel;//要接受拖拽的面板
        public DragTest()
        {
            panel = new JPanel();
            panel.setBackground(Color.YELLOW);
            getContentPane().add(panel, BorderLayout.CENTER);
            setSize(500, 200);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setLocation(400, 200);
            setTitle("最简单的拖拽示例:拖拽文件到下面(20130124)");
            drag();//启用拖拽
        }
        public static void main(String[] args) throws Exception
        {
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");//设置皮肤
            new DragTest().setVisible(true);;
        }
        public void drag()//定义的拖拽方法
        {
            //panel表示要接受拖拽的控件
            new DropTarget(panel, DnDConstants.ACTION_COPY_OR_MOVE, new DropTargetAdapter()
            {
                @Override
                public void drop(DropTargetDropEvent dtde)//重写适配器的drop方法
                {
                    try
                    {
                        if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor))//如果拖入的文件格式受支持
                        {
                            dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);//接收拖拽来的数据
                            List<File> list =  (List<File>) (dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
                            String temp="";
                            for(File file:list)
                                temp+=file.getAbsolutePath()+";\n";
                            JOptionPane.showMessageDialog(null, temp);
                            dtde.dropComplete(true);//指示拖拽操作已完成
                        }
                        else
                        {
                            dtde.rejectDrop();//否则拒绝拖拽来的数据
                        }
                    }
                    catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
    个人网站:https://haoji.me
    github:https://github.com/sxei
    博客园:http://www.cnblogs.com/liuxianan
    copyright ©2012-2020 小茗同学

    【转载文章务必保留出处和署名,谢谢!】

  • 相关阅读:
    SVN上新增一个项目和用户
    Linux增加swap分区的方法
    FPGA研发之道(25)-管脚
    altera tcl
    信号处理的好书Digital Signal Processing
    每天逛一次官方论坛
    GTS、GCK,GSR全称
    altera tcl
    FPGA组成、工作原理和开发流程
    复杂可编程逻辑器件CPLD的基本结构
  • 原文地址:https://www.cnblogs.com/liuxianan/p/2875701.html
Copyright © 2020-2023  润新知