簡體   English   中英

調整JFrame大小后會發生什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM