[英]What happens when a JFrame is resized?
我很好奇當JFrame調整大小時,Java中究竟會發生什么。
我問這個是因為我在JFrame中向我的bigCOntainer(類型為JPanel)添加一個組件時遇到了一個問題。 我希望在用戶執行某個操作時添加一些內容,但是在JFrame以某種方式調整大小之前,該組件不會被明顯添加。
當我做一些嘗試讓新組件出現時,我發現了這個; 我調用了myJFrame.pack()。 作為第二個問題,我想知道pack()的作用,通常和特定於調整大小。 Java文檔使得它將每個組件的大小調整為其首選大小。 我的解決方案,如果我決定在我的實現中使用pack()來顯示新組件,則總是設置首選大小。 任何人都可以證明這是一個公認的編程實踐嗎? 這看起來確實是一個好主意。
我也試過repaint()來顯示新的組件但是沒有用。
您需要調用revalidate()
, 然后在運行時添加或刪除組件的容器上repaint()
。
revalidate()
告訴容器的布局管理器重新布局它包含的組件,這是代碼中缺少的。 如果沒有此請求,布局不會更改,並且在重新調整GUI大小之前,您不會看到更改,這幾乎完全相同。
請注意,如果您在啟動時向GUI添加組件,則解決方案是僅在添加所有組件后將 pack()
和setVisible(true)
調用到頂級容器。
有關說什么pack()
功能,做我們所做的事情 - 閱讀源代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.