java swing中实现拖拽功能示例

时间:2023-09-15 11:46:42 

java实现拖拽示例

java swing中实现拖拽功能示例

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();
                }
            }
        });
    }
}

标签:java,swing
0
投稿

猜你喜欢

  • Android自定义View绘图实现渐隐动画

    2022-07-04 19:41:34
  • C#中Span相关的性能优化建议

    2021-07-05 15:42:26
  • Python基于pyjnius库实现访问java类

    2022-01-03 12:29:06
  • springboot+mybatis+枚举处理器的实现

    2023-11-06 00:48:04
  • SpringBoot新手入门的快速教程

    2021-09-28 23:23:25
  • Android AIDL实现两个APP间的跨进程通信实例

    2022-03-29 08:37:54
  • Java链表(Linked List)基本原理与实现方法入门示例

    2021-10-12 05:49:14
  • Android软键盘挡住输入框的终极解决方案

    2022-04-30 01:16:47
  • Java枚举类用法实例

    2023-09-25 01:47:34
  • Flutter实现顶部导航栏功能

    2023-03-10 17:13:48
  • springboot注册bean的三种方法

    2023-11-22 21:57:12
  • java实现银行管理系统

    2023-12-07 23:50:28
  • springboot读取application.yaml文件数据的方法

    2023-09-06 05:29:24
  • Android抓取CSDN首页极客头条内容完整实例

    2023-06-09 17:01:16
  • Flutter学习之实现自定义themes详解

    2022-04-17 17:20:49
  • Android基于ViewPager实现的应用欢迎界面完整实例

    2021-10-02 23:01:52
  • Unity 如何获取鼠标停留位置下的物体

    2023-09-05 17:17:14
  • JAVA多线程之实现用户任务排队并预估排队时长

    2022-03-26 03:06:20
  • Android中NestedScrolling滑动机制详解

    2022-09-16 22:32:13
  • Android 回调详解及简单实例

    2023-03-06 10:49:35
  • asp之家 软件编程 m.aspxhome.com