java中JFrame里面的getContentPane()是什么意思啊 书上说是窗口的内容面板 往窗口添加组件要通过面板才行

代码如下publicclassaaaextendsJFrame{……JLableb=newJLable("求解");getContentPane.add(b);……}但是... 代码如下
public class aaa extends JFrame{
……
JLable b = new JLable("求解");
getContentPane.add(b);
……
}

但是我现在不用内容面板 直接用add()还是可以向窗口添加组件 代码如下
public class aaa extends JFrame{
……
JLable b = new JLable("求解");
add(b);
……
}
展开
 我来答
skyyks0001
2011-09-08 · TA获得超过430个赞
知道小有建树答主
回答量:228
采纳率:100%
帮助的人:397万
展开全部
这个是因为在原来AWT的时代,对于Frame,必须使用getContentPane()然后再add,但是对于JFrame,如果只是调用add()方法,完全不用。

参见JFrame的Javadoc:
JFrame 类与 Frame 轻微不兼容。与其他所有 JFC/Swing 顶层容器一样,JFrame 包含一个 JRootPane 作为其唯一的子容器。根据规定,根窗格所提供的内容窗格应该包含 JFrame 所显示的所有非菜单组件。这不同于 AWT Frame。为了方便地使用 add 及其变体,已经重写了 remove 和 setLayout,以在必要时将其转发到 contentPane。这意味着可以编写:

frame.add(child);
子级将被添加到 contentPane。内容窗格始终是非 null 的。试图将其设置为 null 会导致 JFrame 抛出异常。默认的内容窗格上会设置有 BorderLayout 管理器。有关添加、移除和设置 JFrame 的 LayoutManager 的详细信息,请参阅 RootPaneContainer。
一数一道
推荐于2017-09-07 · TA获得超过1751个赞
知道小有建树答主
回答量:369
采纳率:75%
帮助的人:216万
展开全部
  你可以把JFrame看做是一个容器,JFrame的public Container getContentPane()返回的是一个Container。getContentPane()的实现时getRootPane().getContentPane();getRootPane()返回的是JRootPane,JRootPane的etContentPane()返回的是一个Container类。
  JFrame的add方法是继承了Container方法。所以如果只是添加组件直接调用JFrame的add方法就可以了,没有必要调用getContentPane()再调用add方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户08530
2011-09-08 · TA获得超过177个赞
知道答主
回答量:467
采纳率:0%
帮助的人:279万
展开全部
举这么个例子吧 : Frame呢就像是你家刚盖起来只有一个框架的楼房,只有钢筋和大体的结构 ; contentPane 呢就像是在那个框架的房子上修了墙体; 只有有了墙,你才会搬进去住吧,你才会把桌子,椅子,沙发等等的组件添加到里面去,呵呵 。 你可以这么记,其实java它就是这么设计的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友58fd71151
2011-09-08 · TA获得超过391个赞
知道小有建树答主
回答量:442
采纳率:100%
帮助的人:139万
展开全部
这里应该可以解释你的问题
http://zhidao.baidu.com/question/59518588.html
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式