私のアプリはダイアログをポップアップします。ユーザーは通常、このダイアログとアプリケーション ウィンドウをしばらくの間、行ったり来たりしたいと考えています。このダイアログを一番上に置いて、メイン アプリケーション ウィンドウの後ろに隠れないようにします。しかし同時に、しばらく必要がない場合に邪魔にならないように、ダイアログに最小化ボタンを付けたいと思います。
これが私が試したことです:
モードレス JDialog を使用します。ダイアログはうまく前面に表示されますが、最小化ボタンがなく、独自のタスクバー ボタンもありません。
JFrame を使用します。ダイアログには最小化ボタンと独自のタスクバー ボタンがありますが、メイン ウィンドウがフォーカスされると、ダイアログはその後ろに隠れます。
JFrame を使用し、ダイアログに WindowListener.windowDeactivated() { this.toFront() } を追加します。これの問題は、 toFront() もフォーカスを設定するため、奇妙なフォーカスのちらつき効果が得られることです。
setAlwaysOnTop で JFrame を使用する - これが最も近い解決策ですが、ウィンドウは私のアプリケーションだけでなく、他のすべてのアプリケーションの上に表示されます。
フォーカスを変更せずに toFront が JFrame を前面に持ってくるだけなら簡単ですが、残念ながらそうではありません。JFrame の Z オーダーを変更する別の方法はありますか?
編集:JDialogを「ロールアップ」する簡単な方法、つまりタスクバーではなく最小化する方法があれば、それも私の問題を解決することに気づきました。