Java 圖形 複製/貼上 Copy/Past 功能

參考國外網站:

http://www.javaexamplecenter.com/others/clipboard_copy_image.php

今天試了以Java程式語言開發的 Application,能否將  Copy/ Past用在圖形上。

首先你必須寫一個 Class 繼承Transferable,內容如下:

static class TransferableImage implements Transferable {

  /* -- image for transfer */
    
  private Image image;

  /* -- constructor */
    
  public TransferableImage( Image image ) {
    this.image = image;
  }

  /* -- when is performed check for image type, returns image */
    
  @Override
  public Object getTransferData( DataFlavor flavor ) throws UnsupportedFlavorException {
    if ( isDataFlavorSupported( flavor ) ) {
      return image;
    } else {
      throw new UnsupportedFlavorException( flavor );
    }
  }

  /* -- method for checking supported type */
    
  @Override
  public boolean isDataFlavorSupported( DataFlavor flavor ) {
    return flavor == DataFlavor.imageFlavor;
  }

  /* -- get supported type */
    
  @Override
  public DataFlavor[] getTransferDataFlavors() {
    return new DataFlavor[]{ DataFlavor.imageFlavor };
  }
}

然後,如果你希望要有複製功能。
/* -- read image, here from project resources */
Image image = Toolkit.getDefaultToolkit().getImage( this.getClass().getResource( "resource\\lock.gif" ) );
          
/* -- transfer image into clipboard */    
TransferableImage transferable = new TransferableImage( image );
Toolkit.getDefaultToolkit().getSystemClipboard().setContents( transferable, null );

最後是貼上功能。
/* -- get clipboard content */
Transferable transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents( null );
/* -- check, if contains image. If yes, try to get it */
if ( transferable != null && transferable.isDataFlavorSupported( DataFlavor.imageFlavor ) ) {

  try {
    Image image = (Image)transferable.getTransferData( DataFlavor.imageFlavor );

    //this.getGraphics().drawImage( image, 100, 200, null );
  }
  catch (UnsupportedFlavorException ex) {
    Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
  } catch (IOException ex) {
    Logger.getLogger(Window.class.getName()).log(Level.SEVERE, null, ex);
  }

廣告

About fenjj

Perfect !!??...
本篇發表於 Uncategorized。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s