java swing中实现拖拽功能示例
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();
}
}
});
}
}