黑马程序员技术交流社区

标题: JPanel p =(JPanel)this.getContentPane();疑问 [打印本页]

作者: 土突突    时间: 2014-6-15 16:51
标题: JPanel p =(JPanel)this.getContentPane();疑问
本帖最后由 土突突 于 2014-6-20 18:00 编辑

看到了一个程序如下
class  Demo extends JFrame
{
        JButton cal =new JButton("计算");
        JTextField txt1 =new JTextField(15);
        JLabel lbl1 =new JLabel("+");
        JTextField txt2 =new JTextField(15);
        JLabel lbl2 =new JLabel("=");
        JTextField txt3 =new JTextField(15);
        public Demo(){
                JPanel p1 =new JPanel();
                p1.add(txt1);p1.add(lbl1);
                p1.add(txt2);p1.add(lbl2);
                p1.add(txt3);
                JPanel p =(JPanel)this.getContentPane();////疑问来了后面就省略了...


getContentPane()是JFrame的方法。其返回的是Container对象。而Container是JPanel的父类啊。
怎么可以将是父类的Container强制转换为JPanel呢?
还有为什么不直接在JFrame里添加控件,反而先要添加进JPanel里中呢?不是很麻烦吗?

作者: y200745    时间: 2014-6-15 17:18
不直接在JFrame里添加控件,反而先要添加进JPanel的原因是一个Jframe可以有多个Jpanel。你学习过布局管理器吗?一个框架中,可以在不同的面板上,设置不同的布局管理,这是UI设计的基础。如果只在Jframe上添加,自由度会大大降低。看看360的界面。每一部分的布局不一样的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2