A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 土突突 中级黑马   /  2014-6-15 16:51  /  5371 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 土突突 于 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里中呢?不是很麻烦吗?

1 个回复

倒序浏览
不直接在JFrame里添加控件,反而先要添加进JPanel的原因是一个Jframe可以有多个Jpanel。你学习过布局管理器吗?一个框架中,可以在不同的面板上,设置不同的布局管理,这是UI设计的基础。如果只在Jframe上添加,自由度会大大降低。看看360的界面。每一部分的布局不一样的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马