2009-11-13 109 views
20

我已經創建了一個自定義的JPanel來顯示圖像(我們稱它爲MyPanel),我已將它添加到JFrame的contentPane中。如何根據內容自動調整JFrame的大小

我想JFrame自動調整大小,以適應圖像更改時MyPanel

看起來我需要撥打frame.pack()來做到這一點。從MyPanel調用pack()增加了耦合,所以我不想這樣做。

爲了解決我伸出JFrame問題(可以稱之爲MyFrame)並取得MyFrame觀察員,並MyPanel觀測。每當圖像MyPanel顯示更改時,它都會通知偵聽器,MyFrame用於此實例。然後MyFrame在獲取通知時調用pack()

根據其內容是否有更平滑的方式調整JFrame

回答

10

您描述的解決方案似乎是合理的。

或者,每當MyPanel更改其圖像時,它都可以找到它的父Frame並在其上調用pack()。如果不存在這樣的幀,則不要執行任何操作。無需創建額外的類,並且它可以像您將要獲得的那樣鬆散耦合。您可以使用SwingUtilities.getAncestorOfClass()輕鬆完成此操作。

+1

是的,我的方法是合理的。感謝您的批准:) – nimcap 2010-08-08 14:24:06

相關問題