Tôi hiện đang làm việc trên mã Java có thể sao chép tệp vào khay nhớ tạm của hệ thống.DataFlavor yêu cầu để sao chép tệp trong Mac OSX
Đối với Windows và Linux Tôi đã nhận nó làm việc. Đối với OSX tôi đã thử một số hương vị nhưng hành động "Dán" trong Finder không bao giờ kích hoạt hoạt động.
Bất cứ ý tưởng mà các thiết lập DataFlavor được yêu cầu cho Finder?
hương vị sử dụng:
DataFlavor.javaFileListFlavor
URILIST_FLAVOR = new DataFlavor("text/uri-list");
XFILELIST_FLAVOR = new DataFlavor("application/x-java-file-list");
GNOMEFILELIST_FLAVOR = new DataFlavor("x-special/gnome-copied-files");
Phương pháp này để trả lại dữ liệu cho các hương vị:
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if(FILELIST_FLAVOR.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return Arrays.asList(files);
} else if(InputStream.class == flavor.getRepresentationClass()) {
return getStreamData(files, null);
}
} else if(DataFlavor.javaFileListFlavor.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return locallist;
} else if(InputStream.class == flavor.getRepresentationClass()) {
return getStreamData(files, null);
}
} else if(URILIST_FLAVOR.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return Arrays.asList(files);
} else if(InputStream.class == flavor.getRepresentationClass()) {
return getStreamData(files, null);
}
} else if(GNOMEFILELIST_FLAVOR.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return Arrays.asList(files);
} else if(InputStream.class == flavor.getRepresentationClass()) {
// FIXME support cut and copy
return getStreamData(files, "copy");
}
} else if(XFILELIST_FLAVOR.equals(flavor)) {
if(List.class == flavor.getRepresentationClass()) {
return locallist;
} else if(InputStream.class == flavor.getRepresentationClass()) {
return getStreamData(files, null);
}
}
throw new UnsupportedFlavorException(flavor);
}
Cảm ơn, André
Không ai một ý tưởng? –