質問: コンテンツに応じてjframeのサイズを自動変更する方法 画像を表示するカスタムjpanelを作成し(これをmypanelと呼びます)、これをjframeのcontentpaneに追加しました。画像が変更されたときにjframeに合わせてmypanelのサイズを自動的に変更したい。これを行うには、frame.pack()を呼び出す必要があるようです。 mypanelからpack()を呼び出すと結合が増えるので、そうしたくありません。この問題を解決するために、私はjframeを拡張し(myframeと呼びましょう)、myframeオブザーバー、およびmypanelを監視可能にしました。画像mypanelが変更を表示しているときはいつでも、リスナーに通知します。この場合はmyframeです。そして、通知を受け取ると、myframeはpack()を呼び出します。内容に応じてjframeのサイズをよりスムーズに変更する方法はありますか?
回答: あなたが説明した解決策は合理的なようです。または、mypanelが画像を変更するたびに、親フレームを見つけて、pack()を呼び出すことができます。そのようなフレームが存在しない場合は、何もしないでください。追加のクラスを作成する必要はなく、取得するのと同じくらい緩い結合です。 swingutilities.getancestorofclass() を使用して、これを簡単に行うことができます。