質問

私は画像を表示する(JPanelそれを呼び出すことができます)カスタムMyPanelを作成して、私はJFrameのcontentPaneにこれを追加した。

私はJFrameMyPanelに合わせて自動的にサイズ変更したい場合に、画像が変化します。

私はこれを行うにはframe.pack()を呼び出す必要がありますように

に見えます。 pack()からMyPanelを呼び出すと、私はそれを行うにはしたくないの結合を増加させます。

私はJFrameMyFrameそれを呼び出すことができます)を拡張し、MyFrameオブザーバー、およびMyPanelに観察をした問題を解決するには。画像MyPanelが変更を表示しているときはいつでも、それは、このインスタンスのリスナー、MyFrameに通知します。それは、通知を取得するときに、その後MyFramepack()を呼び出します。

その内容に応じてJFrameリサイズのスムーズな方法はありますか?

役に立ちましたか?

解決

あなたが説明したソリューションは、合理的なようです。

MyPanelは、その画像を変更するたびに

あるいは、それは、その親のフレームを探しに行くし、それの上に()パックを呼び出すことができます。そのようなフレームが存在しない場合は、何もしません。あなたが得ようとしているとして、追加クラスを作成する必要はありませんし、そのよう疎結合ありません。あなたは<のhref = "http://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html#getAncestorOfClass%28java.lang.Class,%20java.awt.Component%29を使用することができます"REL =" nofollowをnoreferrer "> SwingUtilities.getAncestorOfClass()は簡単にこれを行うにはを。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top