質問: パネルを透かせることってできますか? メインパネルaには絵が貼り付けてあります。 メインパネルaの上にパネルbを貼り付けてそこに丸い絵を貼り付けます。その時、四角いパネルbに丸い絵を張るので角を透かせる必要があります。丸いパネルを使えれば問題ないのですが、そんな事は無理だと思ったので・・・ じゃあ透かせばいいのでは?と無い頭で考えました。 できますか?
回答: 次の前提で話を進めます。 この条件が違っている場合は、再度質問してください。 ・パネルというのは、java.awt.panelのこと ・パネルbに貼り付けた絵は動かさない (回答) awtのpanelには、背景を透明にする機能は用意されていません。 どうしても、透明にしたいのならupdateメソッドをオーバーライドしたクラスを 作成する必要があります。このときupdateメソッドは、子コンポーネントがないのなら paintメソッドを呼び出すだけでokです。 (解説) java.awt.container#updateメソッドでは、 ・背景の再描画 ・paintメソッドの呼び出し ・子コンポーネントの描画 が行われます(概略です)。 これをオーバーライドすることで、 背景の再描画をしない = 背景が透明 を実現できます。 *もし、このコンポーネント内の図形を動かす(移動なども含む)場合は、 注意が必要です。 背景の再描画が行われないため、図形を移動させると移動前の図形は 背景で塗りつぶされることがなく、そのまま残ってしまいます。