java中JFrame里面的getContentPane()是什么意思啊 书上说是窗口的内容面板 往窗口添加组件要通过面板才行
答案:4 悬赏:50 手机版
解决时间 2021-02-15 16:53
- 提问者网友:疯子也有疯子的情调
- 2021-02-14 21:59
java中JFrame里面的getContentPane()是什么意思啊 书上说是窗口的内容面板 往窗口添加组件要通过面板才行
最佳答案
- 五星知识达人网友:煞尾
- 2021-02-14 22:30
你可以把JFrame看做是一个容器,JFrame的public Container getContentPane()返回的是一个Container。getContentPane()的实现时getRootPane().getContentPane();getRootPane()返回的是JRootPane,JRootPane的etContentPane()返回的是一个Container类。
JFrame的add方法是继承了Container方法。所以如果只是添加组件直接调用JFrame的add方法就可以了,没有必要调用getContentPane()再调用add方法。
JFrame的add方法是继承了Container方法。所以如果只是添加组件直接调用JFrame的add方法就可以了,没有必要调用getContentPane()再调用add方法。
全部回答
- 1楼网友:神的生死簿
- 2021-02-15 01:23
举这么个例子吧 : Frame呢就像是你家刚盖起来只有一个框架的楼房,只有钢筋和大体的结构 ; contentPane 呢就像是在那个框架的房子上修了墙体; 只有有了墙,你才会搬进去住吧,你才会把桌子,椅子,沙发等等的组件添加到里面去,呵呵 。 你可以这么记,其实java它就是这么设计的
- 2楼网友:平生事
- 2021-02-15 00:10
这个是因为在原来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。
参见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。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯