Почему я не могу преобразовать буферизованное изображение в передаваемый объект, чтобы отправить его в буфер обмена?
Я пытаюсь сохранить bufferedImage в буфер обмена моей системы, в основном моя программа делает снимок экрана с областью и сохраняет его в формате PNG, но теперь я бы хотел, чтобы это изображение также можно было отправлять в буфер обмена,
Я пробовал с Toolkit.getDefaultToolkit().getSystemClipboard().setContents( (Transferable) myImage, null);
Затмение хочет, чтобы я бросил свой буфер myImage
изображение в передаваемую, но это не разрешено, и код, который я просмотрел в stackOverflow по этому вопросу, примерно такой же, как и вся моя программа, я не смог использовать его должным образом, поэтому я не уверен, что такое передаваемая часть, и Как я могу сделать один из моего буферизованного изображения, кто-нибудь объяснит?
1 ответ
Вы не можете разыграть BufferedImage
к Transferable
(поскольку они являются различными типами).
Тем не менее, вы можете легко обернуть ваше изображение в Transferable
как это:
Toolkit.getDefaultToolkit()
.getSystemClipboard()
.setContents(new ImageTransferable(myImage), null);
static final class ImageTransferable {
final BufferedImage image;
public ImageTransferable(final BufferedImage image) {
this.image = image;
}
@Override
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] {DataFlavor.imageFlavor};
}
@Override
public boolean isDataFlavorSupported(final DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
@Override
public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (isDataFlavorSupported(flavor)) {
return image;
}
throw new UnsupportedFlavorException(flavor);
}
};