Java中JFrame.getContentPane().add(pane)與JFrame.add(pane)有什麼區別

有區別的
當你創建一個JFrame的時候JFrame jf = new JFrame();
在構造方法JFrame()內部會給jf默認添加一個rootPane
所以執行完JFrame jf = new JFrame();這句話之後jf上面已經添加了一個默認的rootpanel了
然後你再調用jf.add(panel) 這個時候,panel和rootPane是平級的
理由:1,你可以讀源代碼 ,查看構造方法怎麼寫的
2,或者你可以測試一下,分別執行
jf.setBackground(Color.blue);
jf.getContentPane().setBackground(Color.black);
這兩句代碼,看看效果(實際上上面一句並不能改變界面的背景色,下面一句纔可以,因爲rootPane把jf給擋住了,上面一句是改變了jf的背景色,但是你眼睛看到的並不是jf,其實是rootPane.)

另外
jf.getContentPane()==jf.getRootPane().getContentPane()
上面的比較返回的true
所以你調用jf.getContentPane().add(panel) 其實是把panel添加到rootPane上面了 這個時候panel和rootPane就不是平級的了
發佈了27 篇原創文章 · 獲贊 32 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章