lightweight component.
==========================================================================================
由上面的结构树,我们可以看到JRootPane包含有GlassPane 与 Layered Pane,而Layered Pane又包含有ContentPane与Menu Bar,其中程序设计者可选择是否使用MenuBar,若没有使用Menu Bar,则ContentPane就会占据整个版面。
GlassPane:它是一个透明的面版,主要功能是它或以捕获JFrame上的任何事件。GlassPane的默认值是不可看见的,不过可以将它设为看见的(visible),例如若要在GlassPane上做绘图的工作,就可以在GlassPane上显示出来!
LayeredPane:它是一个可以重叠组件的面版,本身就是一个容器,可以将它看成是相当多层的置物架,每一层都可以放置物品,而且上面的物品会遮隹下面的物品。
ContentPane:是最重要的,且是最常到的容器。它是LayeredPane中的一层,一般视为最底层。通常我们会将组件放在ContentPane上,而不会加在LayeredPane中,因为若将组件加入LayeredPane中必须自选管理组件间层次的关系,这会加重程序维护的困难度。苦将组件放入ContentPane,对于像工具栏(ToolBar),PopupMenu等组件,Java会自动高速其层次关系。
=====================================================================
在旧版本的JDK中,要使用JFrame,我们若想在它上面加入其他的组件必须先取得JFrame的ContentPane,然后将要加入的组件放在ContentPane中,假如我们要在JFrame上加入一个JButton,就得象下面这么用:
而新版本的JDK,直接在JFrame中可以调用add(组件)来添加组件,组件将被添加到contentPane。内容窗格始终是非 null的。试图将其设置为 null 会导致 JFrame抛出异常。默认的内容窗格上会设置有 BorderLayout管理器。另外还增加了一个新方法:
public void setDefaultCloseOperation (int operation)
-
设置用户在此窗体上发起 "close"时默认执行的操作。必须指定以下选项之一:
de style="line-height:normal;"<DO_NOTHING_ON_CLOSE de<(在 destyle="line-height:normal;"<WindowConstants de< 中定义):不执行任何操作;要求程序在已注册的 destyle="line-height:normal;"<WindowListener de< 对象的 destyle="line-height:normal;"<windowClosing de< 方法中处理该操作。 de style="line-height:normal;"<HIDE_ON_CLOSE de<(在 destyle="line-height:normal;"<WindowConstants de< 中定义):调用任意已注册的 destyle="line-height:normal;"<WindowListener de< 对象后自动隐藏该窗体。 de style="line-height:normal;"<DISPOSE_ON_CLOSE de<(在 destyle="line-height:normal;"<WindowConstants de< 中定义):调用任意已注册 destyle="line-height:normal;"<WindowListener de< 的对象后自动隐藏并释放该窗体。 de style="line-height:normal;"<EXIT_ON_CLOSE de<(在 destyle="line-height:normal;"<JFrame de< 中定义):使用 destyle="line-height:normal;"<System de< destyle="line-height:normal;"<exit de< 方法退出应用程序。仅在应用程序中使用。
默认情况下,该值被设置为
de style="line-height:normal;"<HIDE_ON_CLOSE de<。 -
==========================================================================
-
Java GUI的继承体系 -
ortant; zoom: 1!imp
ortant; filter: none; font-size: 12px; line-height:normal;"< ortant; zoom: 1!important; filter: none; font-size: 12px; line-height:normal;"<
从上图我们可以看出:JComponent直接继承于Container(容器),由于Swing中所有的组件都直接或者间接继承于此类,因此,Swing中的组件都具有容器类的特点,即可以在组件上放文字,图片等信息。而AWT中的组件都继承于Component,但不一定会继承于Container,所以AWT中的组件就不会都具有容器的特点。