當你創建一個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就不是平級的了