麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

如何在Java應(yīng)用程序中實現(xiàn)copy圖像功能

2019-11-18 13:12:14
字體:
供稿:網(wǎng)友

  用java開發(fā)圖形應(yīng)用程序的朋友一定碰到過如何在程序中實現(xiàn)復(fù)制圖像的功能。在jdk1.4以前,java本身就支持將程序中文字串復(fù)制給其它的非java應(yīng)用程序使用,而將程序中的圖像復(fù)制到非java應(yīng)用程序簡直難上加難。只到j(luò)dk1.4出來,這個問題才得以解決。
  
  一般我們開發(fā)java application界面,主要用swing圖形包。幾乎所有的swing控件都是由JComponent繼續(xù)而來的。假如我們要取得JComponent的圖像,可以用以下方式:
  
  Rectangle rect = comp.getBounds();
  BufferedImage bufImage = new BufferedImage(rect.width,
  rect.height,
  BufferedImage.TYPE_INT_RGB);
  Graphics g = bufImage.getGraphics();
  g.translate(-rect.x, -rect.y);
  comp.paint(g);
  這樣的話,圖像就保存到BufferedImage對象當中了。
  
  現(xiàn)在來看如何將這個BufferedImage復(fù)制到系統(tǒng)clipboard中。要做復(fù)制功能,一般是繼續(xù)TransferHandler類,實現(xiàn)Transferable接口, 這樣你的復(fù)制內(nèi)容才能傳到系統(tǒng)clipboard,為此我們來寫一個ImageSelection類:
  
  /**
  *

Copyright: Copyright (c) 2002


  * @author Turbo Chen
  * @version 1.00
  */
  import java.awt.*;
  import java.awt.image.*;
  import java.awt.datatransfer.*;
  import javax.swing.*;
  
  public class ImageSelection extends TransferHandler
  implements Transferable
  {
  
  PRivate static final DataFlavor flavors[] =
  {DataFlavor.imageFlavor};
  
  private Image image;
  
  public int getSourceActions(JComponent c) {
  return TransferHandler.COPY;
  }
  
  public boolean canImport(JComponent comp, DataFlavor
  flavor[]) {
  for (int i=0, n=flavor.length; i  if (flavor[i].equals(flavors[0])) {
  return true;
  }
  }
  return false;
  }
  
  //將圖像復(fù)制到Image對象.
  
  public Transferable createTransferable(JComponent
  comp) {
  // Clear clip
  image = null;
  Icon icon = null;
  Rectangle rect = comp.getBounds();
  BufferedImage bufImage = new BufferedImage(rect.width,
  rect.height,
  BufferedImage.TYPE_INT_RGB);
  Graphics g = bufImage.getGraphics();
  comp.paint(g);
  
  if (bufImage != null ) {
  image = bufImage;
  return this;
  }
  return null;
  }
  
  // Transferable
  public Object getTransferData(DataFlavor flavor) {
  if (isDataFlavorSupported(flavor)) {
  return image;
  }
  return null;
  }
  
  public DataFlavor[] getTransferDataFlavors() {
  return flavors;
  }
  
  public boolean isDataFlavorSupported(DataFlavor
  flavor) {
  return flavor.equals(flavors[0]);
  }
  }
  
  利用這個類,就可以輕松的將JComponent圖像復(fù)制到系統(tǒng)clipboard了.怎么使用呢,再來看
  
  看下面的代碼:
  final Clipboard clipboard =
  kit.getSystemClipboard();
  
  Icon icon = new ImageIcon("myphoto.jpg");
  final JLabel label = new JLabel(icon);
  label.setTransferHandler(new ImageSelection());
  
  JButton copy = new JButton("Label Copy");
  copy.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
  TransferHandler handler =
  label.getTransferHandler();
  handler.eXPortToClipboard(label, clipboard,
  TransferHandler.COPY);
  }
  });
  
  在你的程序中,要有一個JFrame, 加上一個JLabel,一個JButton,將上面的代碼加進入,你就可以在你的程序中看到圖像如何復(fù)制到系統(tǒng)clipboard了.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品www | 亚洲综合91 | 日韩中字在线 | 国产精品99久久久久久董美香 | 爽爽淫人综合网网站 | av不卡免费在线观看 | 欧美成人精品欧美一级 | 国产合集91合集久久日 | 国产精品久久久久久久久久10秀 | 牛牛热这里只有精品 | 国产精品久久久免费 | 成年人视频免费 | 在线播放黄色网址 | 国产一级一片免费播放 | 国内精品视频饥渴少妇在线播放 | 91成人在线免费视频 | 欧美久久一区二区 | 毛片在线免费观看完整版 | 国产精品色综合 | 久草在线资源观看 | 97porn| 黄色大片www| 久久精品免费国产 | 成年人精品视频 | av成人在线电影 | 中文字幕视频在线播放 | 久久精品一区二区三区国产主播 | 精品国产一区三区 | 黄色影院网站 | 精品久久久久久久久久中出 | 久久久久久久99 | 中文字幕精品在线播放 | 西川av在线一区二区三区 | 欧美 亚洲 视频 | 国产免费乱淫av | 国产1区在线 | 国产一级免费视频 | 中文字幕四区 | 成人勉费视频 | 欧美日本一区二区 | xvideos korean|