点击查看:2015计算机等级考试二级Java入门教程章节汇总
点击查看:2015计算机等级考试二级Java入门教程第十二章汇总
12.3 组件和容器
组件表示能够显示在屏幕上的各种图形化的实体。组件是Component子类的仔何一个对象正像我们已经看到的,JFrame窗口是一个组件,但不包含其他的子类。在研究特定的组件之前。我们先看一看表示组件的类组之间的一般关系。以Component为基础的一类层次如下图所示,示意图中的箭头指向超类。
这个示意图显示了Component的一些子类,其中有些对我们很重要。我们已经讨论了通往JFrame类的这条链,其他的分支是新的。所有由Container派生的类都可以包含Component派生的任何类的对象,通常被称作容器(Container).由于Container类是Coinponen类的子类,每个容器对象也是一个Component,所以一个容器又一可以包含另外一些除Window类私其子类以外的容器,即Window类型(或子类)的对象不能包含在其他的容器中。如果你这样做,就会出现一个异常。JCornponent类是窗口中GUI部分使用的所有Swing组件的基础:
由于这个类是由Container派生来的,所以,全部的Swing组件都是容器。
正像你所看到的,JApplet类是所有Swing小应用程序的基类。它从Component通过cotainer类派生而来它还从扩展、改进的旧Applet类中继承了方法。你应该注意到JApplet,JFrarme, JDialog、Jcomponet类和其子类都在javax.swing包中。Applet类在java.applet中听有其他的类在java.awt.java.applet包很小,只包含一个类加上3个相关的接口,我们并不需要直接使用它。我们常常使用JApplet类定义小应用程序,这比Applet更有意义。
Window和Frame组件
JFrame对象和Window对象之间的基本区别是,JFrarne对象描述的是应用程序的主窗口,而window对象不是这样。在你创建window对象之前,总需要一个JFrame对象。
由于Jdialog类直接由Window类派生而来,所以你只能在JFrame对象中创建应用程序中的JDialog对象除了默认的构造函数外,JDialog类的构造函数通常需要一个JFrarme.对象作为自变量传递进来。JFrame对象称为JDialog对象的父类。JFrame对象有一个可调整大小的边框,它可以包含一个内置的菜单栏,由于JFrame对一象是应用程序中的顶层窗口,所以定义的大小和位置与屏幕有关。以JFrame对象为父类的JDialog对象的定位与其父类相关。
让我们总结一下,通常你将如何使用我们已经讨论过的层次中的关键类。
正像我们所说的,JApplet, JFrame和JDialog类都是容器,这是因为它们都以Containe作为基类,所以原则上可以包含任何类的组件。由于它们最终由component派生而来。所以它们自已也都是组件但有些事情并不像组件那么简单,你不能直接地为应用程序或小于程序的GLI将组件添加到程序的JFranme或JApplet对象。让我们看看练习中的的实际工作过程。
窗口面板
当你想在窗口中添加GUI组件或绘图时,通过JFrame对象添加的组件或在其上面绘画的内容显示在又JFrame对象管理的窗口面板中。小应用程序也是如此:概括地讲。窗口面板是一个包含描述窗口区域的对象,他们呢来自几种不同的类型。
我们将使用个大家都称为内容面板的窗口面板。而不使用其他的面板:contcntPane对象之间、其他窗口面板与应用程序本身的关系显示在这里。
正像你所看到的,在JFrame窗口中标题栏下面的区域对应JRootPane对象,这个对象包含了其他的面板。说明中的layeredPane对象是JlayeredPane类型的。这个面板对应窗口中JRootPane对象占据的整个区域。如果窗口有菜单栏的话,还要进行管理。 layerPane中菜单栏下面的区域就是contentPane对象,最典型地是在这里添加GUI组件:你还可以在内容面板覆盖的区域显示文字或进行任何绘画。layeredPane对象拥有特别的属性供高级应用程序使用,它允许使用而板中组件组覆盖另一个组件组的分层方式进行竹理。使用这种功能,你可以控制组件与另一个组件的关联显示。在这里,因为层按从后向前的特定顺序显示,所以。在层中前面的组件将位于屏幕该层的后面。
还有一个辅助的面板没有显示在示意图,这就是glassPane对象。这个对象也对应全部的JRootPane区域。g1assPane象的内容显示在所有其他面板的顶层,因此,这个类可用来很示你想要永远显示在窗口中其他内容之上的组件,例如下拉式菜单、你也可以使用glassPane显示需要频繁更新的图形,如建立动画,当你显示示的内容是动画时,静态的背景可以通过contentPane单独地进行显示。由于每次动画对象需要重画时不需要重新处理背景,所以整个过程效率要高得多。
JIFrame类定义了几个方法以供你引用们几何面板:
这里讨论的表示面板的所有类本身都是Swing的组件,它们在javax,swing包中定义、JApplet对象与JFrame对象的面板参数相同,所以,向小应用程序添加组件或绘图的操作完全一样由JApplet对象定义的小应用程序,也可以拥有应用程序窗口那样的菜单栏。
所有的面板以及菜单栏都是组件,因此在我们开始研究如何向窗口中添加菜单栏或其他组件之前,先更详细地看看一般组件的组成。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |