0

カスタム CSS レンダリングを使用して Swing アプリケーションを開発しています。システムの一部として JDialogs も使用していますが、ダイアログの外にある特定のコンポーネント (緊急ボタン) にアクセスする必要があります。

このために、次の方法を選択しました。

  • すべてのダイアログは非モーダルです。準モーダルにしたいものは、setAlwaysOnTop になります。
  • 準モーダル ダイアログが常に 1 つ表示されます。この場合、このダイアログの下に別のダイアログを表示し、フルスクリーンで半永久的に表示します。
  • この「ぼかし」ダイアログは、画面全体をカバーし、マウス イベントをキャッチして、緊急ボタンのみに転送します。並行して、緊急ボタンが半永久的な表面から影響なく見えるように、隙間を開けました。
  • ぼかしダイアログはフォーカスしたりアクティブにしたりすることはできません (これには拒否可能なリスナーがあります)

何かが起こり、ぼやけたダイアログが私の準モーダルダイアログを覆っているように見えるまで、すべてがうまくいきます。ただし、外部アプリケーション ウィンドウをその上に移動すると、準モーダル ダイアログが上部に残ります。複雑な説明の代わりに、次のリンクの画像を参照してください: http://lost.lost.hu/javascreen.png

これまでのところ、再描画、イベント、すべてをデバッグしようとしましたが、これを引き起こすものは何も見つかりませんでした. 特に、上に示したケースは、ここで何が起こっているのかを理解するのに私を悩ませます。

この現象を取り除くために、最近 Java 1.7 に更新しましたが、今日は戻ってきました。

4

0 に答える 0