我希望能夠在JLabel從圖像中丟棄時設置圖像。一個網頁瀏覽器。我基於Drag-and-Drop Support for Images的實現。將圖像從瀏覽器拖放到JLabel上
@Override
public boolean importData(JComponent comp, Transferable t) {
if (comp instanceof JLabel) {
JLabel label = (JLabel) comp;
if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
try {
image = (Image) t.getTransferData(DataFlavor.imageFlavor);
ImageIcon icon = new ImageIcon(image);
label.setIcon(icon);
return true;
} catch (Throwable th) {
log.error("Failed to accept dropped image", th);
}
} else if (t.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
try {
@SuppressWarnings("unchecked")
List<File> files = (List<File>) t.getTransferData(DataFlavor.javaFileListFlavor);
if (files.size() == 1) {
ImageIcon icon = new ImageIcon(files.get(0).getAbsolutePath());
label.setIcon(icon);
}
return true;
} catch (Throwable th) {
log.error("Failed to accept dropped image", th);
}
}
}
return false;
}
對於DataFlavor.javaFileListFlavor部分一切工作正常,但與DataFlavor.imageFlavour產生的圖像總是空和ImageIcon的被實例化時,一個NullPointerException異常被拋出。
有人知道爲什麼會發生這種情況?
感謝您花時間調查TE。我不知道發生了什麼,但使用與您完全相同的設置(chrome,OSX 10.7.2,java 1.6.0_29)我的代碼和我的代碼都獲得了空傳輸數據。 – Philippe 2012-01-08 21:07:22
它從Safari和郵件工作 – Philippe 2012-01-08 21:14:37