首先你应该看看
Swing DragDrop support.之后,有几个小技巧为不同的操作系统。一旦你有事情,你会处理drop()回调。在这个回调中,你需要检查Transferable的DataFlavor。
List dropppedFiles = (List)transferable.getTransferData(DataFlavor.javaFileListFlavor)
对于Linux(可能是Solaris),DataFlavor有点棘手。你需要做自己的DataFlavor和Transferable类型将不同
nixFileDataFlavor = new DataFlavor("text/uri-list;class=java.lang.String");
String data = (String)transferable.getTransferData(nixFileDataFlavor);
for(StringTokenizer st = new StringTokenizer(data, "\r\n"); st.hasMoreTokens();)
{
String token = st.nextToken().trim();
if(token.startsWith("#") || token.isEmpty())
{
// comment line, by RFC 2483
continue;
}
try
{
File file = new File(new URI(token))
// store this somewhere
}
catch(...)
{
// do something good
....
}
}