JAVAで透過するウィンドウや、独自シェイプのウィンドウを作成する方法のメモ。

ただし、すべての環境でできるわけではないので注意。
(すべての環境でこれを実現するには、Robotを使って画面をキャプチャしてから、その上に自分で作成していくなどの方法が必要になる。)

基本的に、詳しい説明は以下のサイトにあるのでそちらで

http://java.sun.com/developer/technicalArticles/GUI/translucent_shaped_windows/

さて、この方法をEclipse上で開発を行っていると、
「アクセス制限: 型 AWTUtilities は必須ライブラリー C:\Program Files\Java\jre6\lib\rt.jar で制限されているためアクセスできません」
とエラーになってしまい使えません。

でも、これを以下のようにして強制的に使ってしまいます。

import org.apache.commons.lang.reflect.MethodUtils;
:
Class clz = Class.forName("com.sun.awt.AWTUtilities");
if(clz != null){

	try{
		Object[] args1 = {frame,bg};
		Class[] types1 = {Window.class,Shape.class};
		MethodUtils.invokeExactStaticMethod(clz, "setWindowShape",args1,types1);

		Object[] args2 = {frame,0.8f};
		Class[] types2 = {Window.class,float.class};
		MethodUtils.invokeExactStaticMethod(clz, "setWindowOpacity", args2,types2);
       }
       catch(Exception ex){}

こんな感じにReflectionを使ってしまいます。
ただし、Reflectもすべて自前で行ってもそれほど面倒でもないのですが、
ここでは、ほかの理由もあってすでにApache commonsのlangライブラリを使っていたので、そちらを使いました。

関連記事

Leave a Reply

Spam protection by WP Captcha-Free

ソフトウェア&ライブラリ



ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
カレンダー
2010年7月
« 6月   8月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

カスタム検索
RSS
Add to Google
にほんブログ村 IT技術ブログへ