Какова цель «Контейнер c = getContentPane ();» в качелях? - PullRequest
5 голосов
/ 02 апреля 2009
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>*/

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);
    }
}

Мой вопрос без использования "Container c = getContentPane ();" Я получаю правильный вывод. Как это возможно? В чем причина?

1 Ответ

14 голосов
/ 02 апреля 2009

Для начала Swing заставил вас использовать getContentPane () для таких вещей, как add () и setLayout (), чтобы вы поняли, что были разные слои. Через некоторое время, я думаю, они признали, что это было болезненно, поэтому они вызвали getContentPane () внутренне, так что вам больше не нужно.

Это было изменено в JDK 1.5 :

Наконец, через семь лет мы сделали jFrame.add эквивалентно jFrame.getContentPane (). добавить ()

А вот ссылка на обоснование первоначальной причины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...