20111019

swing中的pane

任何頂級容器(JFram, JDailog, JWindow, JApplet, JInterFrame)包含JRootPane,而JRootPane包含一對同級的Glasspane和JLayeredpane。JLayeredpane又包含JContentPane與一個可選的JMenu。

在swing中所有的加入組件都會轉發到ContentPane中,所以實際上Container.add(component)是相同於Container.getContentPane.add(component)。

如何取得ContentPane?
以下三者可以得知平常加入組件的寫法其實是JVM幫忙轉發的
Container.getContentPane();
Container.getRootPane().getContentPane();
Container.getRootPane().getLayeredPane().getComponent(0);
System.out.println((Container.getRootPane().getLayeredPane().getComponent(0)==jf.getContentPane())? "true" : "fasle" ); 
回傳TRUE。

PS.Container.getRootPane().getLayeredPane().getComponent(0)是回傳Component,要記的轉型

沒有留言: