私は現在、大学のコースのグループ プロジェクトに取り組んでいますが、ちょっとした障害にぶつかりました。私たちが実装することを決定したプログラムは、ユーザー名などを保存および共有するための中央サーバーを備えたピアツーピア チャット クライアントです。私は GUI を担当するように割り当てられました。
友人が冗談めかして「燃えるような背景を入れてはどうか」と提案してくれました。そこで、ユーザーが選択した背景画像を使用することにしました。このままでは、背景画像の一部のみが表示され、その上にすべてのコンポーネントが表示されるため、半透明を実装することにしました。
これは私の問題があるところです:
入力ボックスからチャット ウィンドウに情報を送信したり、フレンド リストをナビゲートしたり、チャット ウィンドウをスクロールしたりすると、奇妙なアーティファクトが残されます。これらのアーティファクトは、[送信] ボタンの半透明の「ゴースト」、メニューの一部、または古いテキストである場合があります。フレーム全体が適切に再描画されていないように見えますが、それがどのように機能するかはわかりません。
JTextComponent を実装するコンポーネントの場合、選択色を半透明に設定しています。他のコンポーネントについては、背景を半透明に設定しています。コンポーネントを見て、それが何であるかに応じてその半透明度を設定し、それが何らかのコンテナであるかどうかを確認し、各アイテムの半透明度を再帰的に設定する setTranslucency(Component com) 関数があります。
現在、この問題を解決するために私が見つけた方法は、ウィンドウを見えないようにドラッグすることです (ウィンドウを最小化するか、画面外にドラッグして戻すなど)。
そう、
1) ウィンドウを画面の外にドラッグしたり最小化したりしたときのように、ウィンドウ全体を強制的に更新する方法はありますか?
また、
2) そもそも私のやり方が悪いのでしょうか? もしそうなら、どうすれば修正できますか?
参照用の写真は次のとおりです。