您的位置:首页 > 其它

JFrame 的结构层次图

2014-07-31 10:47 302 查看
现在我们再来看另一张图,从模型的角度来看 JFrame 的层次:



可以看出,其实 ContentPane 是添加在 LayeredPane 上的一个控件。

而 LayeredPane 和 GlassPane 是直接添加在 RootPane 上的,

RootPane 直接添加在 JFrame 上。

其实你只要记住:

1、你现在不再需要去 getContentPane(),

2、ContentPane 默认是一个 JPanel ,

这两个结论就可以了……

我们可以在

JFrame
对象中添加

AWT
或者

Swing
组件。但是,
虽然它有

add
方法,却不能直接用于添加组件,否则会抛出异常
——
不信就试试。造成这个现象的原因只有一个解释:
JFrame
不是
一个容器,它只是一个框架。那么,应该怎么添加组件呢?

JFrame
有一个

Content Pane
,窗口能显示的所有组件都是添
加在这个

Content Pane
中。
JFrame
提供了两个方法:
getContentPane


setContentPane
就是用于获取和设置其

Content Pane
的。


JFrame
添加组件有两种方式:

1)

getContentPane()
方法获得
JFrame
的内容面板,
再对其加
入组件:
frame.getContentPane().add(childComponent)

2)
建立一个
Jpanel

JDesktopPane
之类的中间容器,把组件
添加到容器中,

setContentPane()
方法把该容器置为
JFrame
的内
容面板:

Jpanel contentPane=newJpanel();

……
//
把其它组件添加到
Jpanel

;

frame.setContentPane(contentPane);

//

contentPane
对象设置成为
frame
的内容面板

我们可以在

JFrame
对象中添加

AWT
或者

Swing
组件。但是,
虽然它有

add
方法,却不能直接用于添加组件,否则会抛出异常
——
不信就试试。造成这个现象的原因只有一个解释:
JFrame
不是
一个容器,它只是一个框架。那么,应该怎么添加组件呢?

JFrame
有一个

Content Pane
,窗口能显示的所有组件都是添
加在这个

Content Pane
中。
JFrame
提供了两个方法:
getContentPane


setContentPane
就是用于获取和设置其

Content Pane
的。


JFrame
添加组件有两种方式:

1)

getContentPane()
方法获得
JFrame
的内容面板,
再对其加
入组件:
frame.getContentPane().add(childComponent)

2)
建立一个
Jpanel

JDesktopPane
之类的中间容器,把组件
添加到容器中,

setContentPane()
方法把该容器置为
JFrame
的内
容面板:

Jpanel contentPane=newJpanel();

……
//
把其它组件添加到
Jpanel

;

frame.setContentPane(contentPane);

//

contentPane
对象设置成为
frame
的内容面板

我们可以在 JFrame 对象中添加 AWT 或者 Swing 组件。但是,虽然它有 add 方法,却不能直接用于添加组件,否则会抛出异常——不信就试试。造成这个现象的原因只有一个解释:JFrame 不是一个容器,它只是一个框架。那么,应该怎么添加组件呢? JFrame 有一个 Content Pane,窗口能显示的所有组件都是添加在这个 Content Pane 中。JFrame 提供了两个方法:getContentPane 和 setContentPane 就是用于获取和设置其 Content Pane
的。

对JFrame添加组件有两种方式:

1)用getContentPane()方法获得JFrame的内容面板,再对其加入组件:frame.getContentPane().add(childComponent)

2)建立一个Jpanel或JDesktopPane之类的中间容器,把组件添加到容器中,用setContentPane()方法把该容器置为JFrame的内容面板:

Jpanel contentPane=newJpanel(); ……//把其它组件添加到Jpanel中; frame.setContentPane(contentPane);

//把contentPane对象设置成为frame的内容面板
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: