読者です 読者をやめる 読者になる 読者になる

White Box技術部

WEB開発のあれこれ(と何か)

【Java】クリップボードの画像データを取得して表示

Java

お疲れ様です。

関東はそろそろ寒さも落ち着いて、春を感じる季節になってきましたが、皆様いかがお過ごしでしょうか。

私は休日に外出しない日々が続いていまして、少しこれでいいのかと思ったりしています。
今日のAndroid Bazaar and Conference 2014 Springに行こうかとも、ちょっと別のイベントに行こうかとも思ったのですが、結局は生活必需品を買いに出ただけでした。

友人なんかはカフェでコーディングとかしているみたいですが、自分は集中できなかったので外で作業する気にはなれず、出不精解消のうまい手がない感じです。

出歩かないと太るんですよね・・・

Javaクリップボード操作

さて、そんな家での作業中に、昔作ろうとして没にしたシステムの機能確認用コードが出て来たので、ここで供養しておこうと思います。
#いつかは作りたいと思っているのですが、ともあれバグ管理システムの後ですね

それが以下の「JavaでOSのクリップボードに格納された画像データ(プリントスクリーンのデータ)を取得して表示するプログラム」になります。

メインどころを抜粋したものが以下になります。

// クリップボードから画像データ取得
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
Image img = (Image) clip.getData(DataFlavor.imageFlavor);

ClipBoardTest cb = new ClipBoardTest();
cb.setImage(img);

// 画面に画像を出力
JFrame f = new JFrame("TestImage");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(cb);
f.pack();
f.setSize(new Dimension(480, 360));
f.setVisible(true);

はい、意外と簡単にできました。
JavaScriptクリップボードを操作したときなんかは結構大変だったので拍子抜けするくらいでした。

全文は少し長いので、以下の続きリンク後に記載してあります。

ImageSelectionに関連する部分は、逆にクリップボードにデータを入れる処理のサンプルです。
本プログラムで確認したい内容とは違うのですが、関連性があったため記載して、処理部分をコメントアウトしています。

久しぶりにJavaを書くとセミコロンを忘れますね(笑
IDEのサポートがありがたいです、ホント。