1

JWindow の背景を完全に透明に設定しました。次に、ペイント メソッドで角丸長方形 (RGB: 0,0,0,100) をペイントし、JWindows ContentPane に JLabel を追加しました。しかし、JWindow を再描画して JLabel を更新しようとすると、古い Rectangle と JLabel の古い値が削除されません。その結果、カスタム ツールチップ ボックス (あるべき姿) の透明性が低下し、JLabels の内容を読み取ることができなくなります。これは、古い内容をオーバーレイするためです。

この問題を解決する方法はありますか?

ところで、再描画しなくても透明度が低下することはありませんが、再描画すると、JLabel の新しいコンテンツが古いコンテンツにオーバーレイされます。

4

1 に答える 1

1

paintComponentまず、代わりにオーバーライドしpaintて を呼び出す必要がありますsuper.paintComponent(g)。一番後ろのレイヤーのコンポーネントが古い内容を消去するので、JWindow は不透明のままにしておく必要があります。すべてのレイヤーが透明な場合、画面のガベージが発生します。

Swing を使用したペイントを参照してください。おそらく、本当に半透明の窓を作りたかったのでしょうか?

于 2011-03-08T10:41:49.333 に答える