1 回答

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊
問(wèn)題是,當(dāng)您不使用正確的布局管理器時(shí),主 JPanel 的首選大小為 0,0,并且不會(huì)在其所在的容器內(nèi)顯示。保存主 JPanel 的 CustomPanel 使用 FlowLayout 并將使用其包含的組件的首選大小來(lái)幫助調(diào)整這些組件的大小和位置,但由于 main 沒(méi)有布局,因此將 JLabel 添加到 main 不會(huì)增加首選大小,因?yàn)樗鼞?yīng)該是 - 另一個(gè)使用布局的原因,CustomPanel 會(huì)將 main 顯示為一個(gè)無(wú)大小的點(diǎn)。您當(dāng)然可以通過(guò)給 main 一個(gè)首選大小來(lái)解決這個(gè)問(wèn)題main.setPreferredSize(...)
,但是這樣你就會(huì)用一個(gè)拼湊來(lái)解決一個(gè)拼湊——這不好。另一種可能的解決方案是將 CustomPanel 的布局更改為其他可能擴(kuò)展它所包含的主 JPanel 的布局,也許為 CustomPanel 提供一個(gè) BorderLayout。在這種情況下,以默認(rèn)方式將 main 添加到 CustomPanel 會(huì)將主 JPanel 放置到 BorderLayout.CENTER 位置,將其展開(kāi)以填充 CustomPanel,并且可能會(huì)看到 JLabel。
當(dāng)然,正確的解決方案是盡可能避免使用空布局。
添加回答
舉報(bào)