2

私はJava(Swing)でアプリケーションを開発しようとしています。これにより、画面にグリッドをオーバーレイし、グリッドの背後にあるものをクリックできるようになります。たとえば、デスクトップのアイコンなどです。

トランスペアレントJFrameまたはトランスペアレントJWindowでこの問題にアプローチしますか?

私が使用するものは何でも、透明なウィンドウ/フレームはする必要があります

  • 常にトップになります。
  • 画面全体を占めます。
  • すべてのクリックをマウスリスナーに登録します。
  • 画面上のクリックの座標を記録します。
  • Graphicsクラスを使用して、画面上にグリッドを描画したり、数字や画像など、クリックスルーする必要のある他の要素を描画したりできます。

どんな方向でもいただければ幸いです。

具体的に説明していない場合はお詫びしますが、これらすべてを実行できるデモウィンドウまたはフレームが見つかりません。ここに例があり、ここの例がありますが、EclipseでWindowUtilsを使用する方法がわかりません。GUI開発はこれが初めてで、基本Javaクラス以外の外部ライブラリを使用したことはありません。

4

1 に答える 1

1
  • 上:Frame.setAlwaysOnTop()が機能するはずです
  • 全画面表示:ウィンドウサイズを表示サイズに設定すると、画面全体を占めるようになります
  • イベントとオーバーレイペイント:実際の動作はプラットフォームによって異なる場合がありますが、通常、アルファコンポーネントを使用してウィンドウに描画し、ウィンドウが名目上透明である場合、ペイントされていない領域(または特定のアルファしきい値未満でペイントされている領域) )は、下にあるすべてのアプリケーション、ウィンドウ、またはコンポーネントにイベントを渡します。
    イベントをキャプチャする場合は、自分の下にあるウィンドウにイベントを再導入する必要がありますが、これは重要です。イベントをキャプチャしない場合は、対象のイベントをキャプチャするためにOS固有のイベントハンドラをインストールする必要があります。

JNAのWindowUtils.setWindowTransparent()は、必要なペイント/イベント動作を提供する必要があります。または、最新のJVMリリースで提供されている同等のAWTUtilsを使用できます。

于 2012-09-21T15:05:47.723 に答える