2010-12-29 19 views

cevap

13

çalışma kod here alınır test başarıyla

package org.life.java.so.questions; 

/** 
* @author Jigar 
*/ 
import java.awt.*; 
import java.awt.datatransfer.*; 
import java.awt.image.*; 
import java.io.*; 

public class CopyImagetoClipBoard implements ClipboardOwner { 
    public CopyImagetoClipBoard() { 
     try { 
      Robot robot = new Robot(); 
      Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
      Rectangle screen = new Rectangle(screenSize); 
      BufferedImage i = robot.createScreenCapture(screen); 
      TransferableImage trans = new TransferableImage(i); 
      Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); 
      c.setContents(trans, this); 
     } 
     catch (AWTException x) { 
      x.printStackTrace(); 
      System.exit(1); 
     } 
    } 

    public static void main(String[] arg) { 
     CopyImagetoClipBoard ci = new CopyImagetoClipBoard(); 
    } 

    public void lostOwnership(Clipboard clip, Transferable trans) { 
     System.out.println("Lost Clipboard Ownership"); 
    } 

    private class TransferableImage implements Transferable { 

     Image i; 

     public TransferableImage(Image i) { 
      this.i = i; 
     } 

     public Object getTransferData(DataFlavor flavor) 
     throws UnsupportedFlavorException, IOException { 
      if (flavor.equals(DataFlavor.imageFlavor) && i != null) { 
       return i; 
      } 
      else { 
       throw new UnsupportedFlavorException(flavor); 
      } 
     } 

     public DataFlavor[] getTransferDataFlavors() { 
      DataFlavor[] flavors = new DataFlavor[ 1 ]; 
      flavors[ 0 ] = DataFlavor.imageFlavor; 
      return flavors; 
     } 

     public boolean isDataFlavorSupported(DataFlavor flavor) { 
      DataFlavor[] flavors = getTransferDataFlavors(); 
      for (int i = 0; i < flavors.length; i++) { 
       if (flavor.equals(flavors[ i ])) { 
        return true; 
       } 
      } 

      return false; 
     } 
    } 
} 
+0

uzaklara ClipboardOwner bir uygulama yerine boş geçirerek ile alabilirsiniz. –

2

belirli olması için, panoya içine tüm ekranı bir ekran yakalama koyar rağmen aslında panoya içine bir BufferedImage depolamak yok jigar kanunu.

Bu, peşinde olduğunuz şey olabilir veya olmayabilir. Bunu yapmak için kendi özel BufferedImage'u kopyalamak istediğinizde, Jigar'ın örneğinden yapıcıyı copyImage() yöntemiyle değiştirdim.

public class CopyImagetoClipBoard implements ClipboardOwner 
{ 
    public void copyImage(BufferedImage bi) 
    { 
     TransferableImage trans = new TransferableImage(bi); 
     Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard(); 
     c.setContents(trans, this); 
    } 

de onun sınıf içindeki main() yöntemi çıkarın.

Ardından bu gibi kodla BufferedImage kopyalayabilirsiniz:

BufferedImage bim; 
    // set bim to your desired BufferedImage content 
    // ... 
    CopyImagetoClipBoard ci = new CopyImagetoClipBoard(); 
    ci.copyImage(bim); 
+1

İyi şeyler, ama orada yepyeni bir sınıf yaratmaya gerek yok. –

+0

Oh, bekle. Boşver. Birisi benim gibi düşünürse, 'CopyImagetoClipBoard'' ClipboardOwner' olduğunu unutmayın. –