JFrame jf = new JFrame();
(1)jf.add(panel);
(2)if.getContentPane().add(pane);
1.4JDK:
是有區別的,在添加jf.add(panel)時這panel會與rootPane平級,而非添加到RootPane底下的containPane
1.5後:
沒有區別,jf.add(panel)會轉發成if.getContentPane().add(pane)
rootPane:
當創建一個JFrame物件時,建構子會給物件默認添加一層rootPane,rootPane包含有自已的LayoutManager、GlassPane(總是為於最上層)、layeredPane管理器(負責管理menuBar 和 contentPane)、contentPane、menuBar (可有可無)
jf.setBackground(Color.blue);
jf.getContentPane().setBackground(Color.black);
這兩句代碼,看看效果(實際上上面一句並不能改變界面的背景色,下面一句才可以,因為contenPane把rootPane給擋住了,上面一句是改變了jf.rootPane的背景色,但是你眼睛看到的並不是rootPane,其實是佔據rootPane全版面的contenPane.)
另外
jf.getContentPane()==jf.getRootPane().getContentPane()
上面的比較返回的true
所以你調用jf.getContentPane().add(panel) 其實是把panel添加到rootPane上面了 這個時候panel和rootPane就不是平級的了
沒有留言:
張貼留言