AppletのImageをクリップボードにコピーする・Javaの小技、サンプル、ニュースなどを紹介していきます。みんなで参考にしてください。

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

AppletのImageをクリップボードにコピーする


Appletで表示した図形や画像などをWindowsのクリップボードに貼り付けるサンプルです。
ただし、Appletからクリップボードのリソースにアクセスするには、Javaのポリシーファイルを書き換える必要があります。


Clipboard cb = null;
try {
cb = Toolkit.getDefaultToolkit().getSystemClipboard();
}
catch (AccessControlException e) {
e.printStackTrace();
}
BufferedImage img = new BufferedImage( 高さ, 幅, BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();

//例えば画像をグラフィックスに対して描画する。
Image img = Toolkit.getDefaultToolkit().getImage("sample.png");
g.drawImage(img, 0, 0, null);

try{
//クリップボードにコピー
ImageTransferable it = new ImageTransferable(img);
cb.setContents(it,null);
}catch(Exception e){
e.printStackTrace();
}



ImageTransferableクラスは自作クラスです。



// クリップボードイメージ転送クラス
protected class ImageTransferable implements Transferable{
// イメージ
Image img;

//データ形式
DataFlavor[] flvs;

public ImageTransferable(java.awt.Image img) throws ClassNotFoundException {
this.img = img;
flvs = new DataFlavor[1];
flvs[0] = new DataFlavor("image/x-java-image; class=java.awt.Image", "Image");
}

public DataFlavor[] getTransferDataFlavors(){
return flvs;
}

public boolean isDataFlavorSupported(DataFlavor flavor){
return flvs[0].equals(flavor);
}

public Object getTransferData(DataFlavor flavor)
throws IOException, UnsupportedFlavorException{
if(flvs[0].equals(flavor)){
return img;
}
throw new UnsupportedFlavorException(flavor);
}

public void lostOwnership(Clipboard clipboard, Transferable contents){
}
}



ポリシーファイルには以下の行を追加してください。
ポリシーファイルの説明はまた別の記事で。

permission java.awt.AWTPermission "accessClipboard";

スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。