Я хочу, чтобы иметь возможность установить изображение на 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 полученное изображение всегда нуль и NullPointerException выбрасывают, когда ImageIcon идет экземпляр.
Кто-то знает, почему это происходит?
Спасибо, что нашли время для исследования т.е. Я не знаю, что происходит, но использую точно такую же настройку, как вы (chrome, OSX 10.7.2, java 1.6.0_29). Я получаю нулевые данные передачи как с вашим, так и с моим кодом. – Philippe
Он работает с Safari и почтой – Philippe