2009-04-02 5 views
5
import java.awt.*; 
import javax.swing.*; 
public class 
import javax.swing.*; 
import java.awt.*; 
import javax.swing.tree.*; 
import javax.swing.event.*; 
/*<applet code="JT.class" width=200 height=300> 
</applet>*/ 

 "Container c = getContentPane();"の目的は何ですか?スイングで?

public class JT extends JApplet { 
    JTree tree; 
    JTextField box; 
    Object nodeInfo; 
    String node1; 
    public void init() { 
     Container c=getContentPane(); 
     c.setLayout(new BorderLayout()); 
     DefaultMutableTreeNode topNode=new DefaultMutableTreeNode("qiscet"); 
     DefaultMutableTreeNode cou=new DefaultMutableTreeNode("Courses"); 
     DefaultMutableTreeNode mca=new DefaultMutableTreeNode("MCA"); 
     DefaultMutableTreeNode mba=new DefaultMutableTreeNode("MBA"); 
     DefaultMutableTreeNode tech=new DefaultMutableTreeNode("B.tech"); 
     topNode.add(cou); 
     cou.add(mca); 
     cou.add(mba); 
     cou.add(tech); 
     DefaultMutableTreeNode manage=new DefaultMutableTreeNode("Management"); 
     DefaultMutableTreeNode ac=new DefaultMutableTreeNode("Accounts"); 
     DefaultMutableTreeNode sp=new DefaultMutableTreeNode("Sports"); 
     DefaultMutableTreeNode lib=new DefaultMutableTreeNode("Library"); 
     topNode.add(manage); 
     manage.add(ac); 
     manage.add(sp); 
     manage.add(lib); 
     tree=new JTree(topNode); 
     c.add(tree,BorderLayout.NORTH); 
     box=new JTextField("",80); 
     c.add(box,BorderLayout.SOUTH); 
    } 
} 

私の質問は使用せずにある "コンテナC = getContentPaneを();"私は正しい出力を得ています。どのように可能ですか?これはなぜですか?

答えて

14

スイングを開始するには、add()やsetLayout()などのためにgetContentPane()を使用して、異なるレイヤーがあることを認識させました。しばらくすると、彼らはそれが痛みであると認めたので、内部的に呼び出されたgetContentPane()を持っていたので、もう必要はありませんでした。

This was changed in JDK 1.5:。

最後に、7年後、私たちが作った jFrame.getContentPane()へ jFrame.add相当(追加)

And here is a link to the rationale behind the original reason.

関連する問題