Setting an image on the clipboard with a custom Transferable object to hold the image : Clipboard « Development « Java Tutorial

import java.awt.Image;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;

import javax.swing.ImageIcon;

public class Main {
  public static void main(String[] argv) throws Exception {

    ImageSelection imgSel = new ImageSelection(new ImageIcon("a.png").getImage());
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(imgSel, null);

class ImageSelection implements Transferable {
  private Image image;

  public ImageSelection(Image image) {
    this.image = image;

  public DataFlavor[] getTransferDataFlavors() {
    return new DataFlavor[] { DataFlavor.imageFlavor };

  public boolean isDataFlavorSupported(DataFlavor flavor) {
    return DataFlavor.imageFlavor.equals(flavor);

  public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
    if (!DataFlavor.imageFlavor.equals(flavor)) {
      throw new UnsupportedFlavorException(flavor);
    return image;

6.44.1.Using the clipboard
6.44.2.Read Clipboard
6.44.3.Placing text on the computer clipboard
6.44.4.Getting data from the computer clipboard
6.44.5.Get string value from clipboard
6.44.6.Write a string to the system clipboard
6.44.7.Getting and Setting an Image on the System Clipboard
6.44.8.Setting an image on the clipboard with a custom Transferable object to hold the image
6.44.9.Determining When an Item Is No Longer on the System Clipboard
6.44.10.implements ClipboardOwner
6.44.11.Copying data to system clipboard
6.44.12.Clip Text