對圖片url轉換為圖片複製到粘貼板,再從粘貼板粘貼到輸入框
try {
//複製時將imgCompress(圖片的url)轉換為圖片複製到粘貼板中
URL url = new URL(imgCompress);
InputStream input = url.openStream();
Image image = ImageIO.read(input);
Toolkit toolkit = Toolkit.getDefaultToolkit();
Transferable transferableImage = new ImageSelection(image);
//set到系統粘貼板
toolkit.getSystemClipboard().setContents(transferableImage, null);
}catch(Exception e1) {
e1.printStackTrace();
}
ImageSelection.java實現如下:
package org.jivesoftware.spark.ui;
import java.awt.Image;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
/**
* 將圖片URL轉換為實際圖像
* @author X2007614
*
*/
public class ImageSelection implements Transferable {
private final Image image;
public ImageSelection(Image image) {
this.image = image;
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (flavor.equals(DataFlavor.imageFlavor)) {
return image;
} else {
throw new UnsupportedFlavorException(flavor);
}
}
@Override
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{DataFlavor.imageFlavor};
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
}
//從系統粘貼板拿到圖片,並粘貼到輸入框中(Jlabel組件)
Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = systemClipboard.getContents(null);
String clipboard = SparkManager.getClipboard();
if(messageclipboard!=null&&clipboard!=null&&clipboard.equals("") ) {
clipboard=messageclipboard;
SparkManager.setClipboard(clipboard);
}
// if(contents.isDataFlavorSupported(DataFlavor.imageFlavor)||contents.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
//
// }
//如果剪切板中有圖片直接獲取
if(contents!=null&&contents.isDataFlavorSupported(DataFlavor.imageFlavor)) {//檢查粘貼板中是否為圖像格式
try {
//獲取圖像數據
Image image = (Image) contents.getTransferData(DataFlavor.imageFlavor);
// BufferedImage bufferedImage = (BufferedImage) image;
// 将图像显示到輸入框上
ChatInputEditor.this.insertIcon(new ImageIcon(image));
//清空粘貼板
SparkManager.setClipboard("");
} catch (UnsupportedFlavorException | IOException e) {
e.printStackTrace();
}
}