1. 程式人生 > >Javax.swing中JFrame.getContentPane().add(pane)與JFrame.add(pane)有何區別?

Javax.swing中JFrame.getContentPane().add(pane)與JFrame.add(pane)有何區別?

參考連結:http://www.cnblogs.com/lm002003/archive/2012/06/11/2545175.html

參考連結:https://blog.csdn.net/qq_32593949/article/details/73656805

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

 

簡而言之就是mian面板上在加一個mian面板  和 面板上覆蓋一個面板的區別(個人理解);