2013-04-18 37 views
4

我有一個內部包含JPanel的JFrame(使用Window Builder Pro時的默認內容)。在我的代碼中,我添加了一個新的JPanel,但外部的JFrame無法重新調整大小以容納新的組件。所以我必須手動拖動。添加新組件後自動更新JFrame大小

下面是截圖:

enter image description here

我怎樣才能讓這個不管我擺在那裏,JFrame中自動更新它的大小,以適應新的Swing組件?

+0

對不起,我的意思是可見的JFrame,是的。 – Ciwan

回答

5

上添加新的組件後,嘗試調用

frame.pack() 

圍框上。包方法將根據其基礎組件的大小設置幀的大小。這實際上是Window類的方法,可here

如果沒有窗口/幀方便的引用,一個簡單的方法是後打電話到 SwingUtilities.getWindowAncestor()面板上的文檔它已被添加。

+0

在我添加新面板的地方,我無法訪問原始的JFrame對象。有沒有另一種方法來解決它?或者我必須將它作爲參數傳遞? – Ciwan

+0

參見上面的編輯方式,如果你沒有一個參考文件,請參考如何獲取參考文獻。 – JohnnyO

2

如何實現這WindowsBuilder我不能說,但在運行時,只需撥打pack框架

2

重塑封閉原生窗口,框架或對話框以適應其內容的通常方法是pack。見the example here。如果您需要訪問例如從輕量級的孩子,你可以得到它

JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);