自動内容に応じてJFrameのサイズを変更する方法
-
20-09-2019 - |
質問
私は画像を表示する(JPanel
それを呼び出すことができます)カスタムMyPanel
を作成して、私はJFrame
のcontentPaneにこれを追加した。
私はJFrame
がMyPanel
に合わせて自動的にサイズ変更したい場合に、画像が変化します。
frame.pack()
を呼び出す必要がありますようにに見えます。 pack()
からMyPanel
を呼び出すと、私はそれを行うにはしたくないの結合を増加させます。
私はJFrame
(MyFrame
それを呼び出すことができます)を拡張し、MyFrame
オブザーバー、およびMyPanel
に観察をした問題を解決するには。画像MyPanel
が変更を表示しているときはいつでも、それは、このインスタンスのリスナー、MyFrame
に通知します。それは、通知を取得するときに、その後MyFrame
はpack()
を呼び出します。
その内容に応じて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()は簡単にこれを行うにはを。