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

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2010年7月
« 6月   8月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ