先看一個例子:

核心代碼:
/***
* 拖拽檔案到文本框
* @param component
*/
public void drag(final component component)// 定義的拖拽方法
{
// panel表示要接受拖拽的控件
new droptarget(component, 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);
dragresponse(list,component);
dtde.dropcomplete(true);// 訓示拖拽操作已完成
} else {
dtde.rejectdrop();// 否則拒絕拖拽來的資料
}
} catch (exception e) {
e.printstacktrace();
}
}
});
}
* 預設實作
@override
protected void dragresponse(list<file> list,component component) {
string filepath=list.get(0).getabsolutepath();
if(component instanceof jtextcomponent){
jtextcomponent text=(jtextcomponent)component;
//把文本框的内容設定為拖拽檔案的全路徑
text.settext(filepath);
}
調用:
項目采用maven 建構,項目結構: