java中组件与容器_Java中组件和容器是什么?两者之间有什么联系?

d32e19939d4e11d26c68d428ef8fde5f.png

6365301500323120816203128.jpg

组件表示能够显示在屏幕上的各种图形化的实体。组件是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更有意义。320e2eaecc514d233030ca3ba79c9f56.png

Window和Frame组件

JFrame对象和Window对象之间的基本区别是,JFrarne对象描述的是应用程序的主窗口,而window对象不是这样。在你创建window对象之前,总需要一个JFrame对象。

由于Jdialog类直接由Window类派生而来,所以你只能在JFrame对象中创建应用程序中的JDialog对象除了默认的构造函数外,JDialog类的构造函数通常需要一个JFrarme.对象作为自变量传递进来。JFrame对象称为JDialog对象的父类。JFrame对象有一个可调整大小的边框,它可以包含一个内置的菜单栏,由于JFrame对一象是应用程序中的顶层窗口,所以定义的大小和位置与屏幕有关。以JFrame对象为父类的JDialog对象的定位与其父类相关。

让我们总结一下,通常你将如何使用我们已经讨论过的层次中的关键类。da3e18e55138326a6bc8a661ee91bd53.png

正像我们所说的,JApplet,

JFrame和JDialog类都是容器,这是因为它们都以Containe作为基类,所以原则上可以包含任何类的组件。由于它们最终由component派生而来。所以它们自已也都是组件但有些事情并不像组件那么简单,你不能直接地为应用程序或小于程序的GLI将组件添加到程序的JFranme或JApplet对象。让我们看看练习中的的实际工作过程。

窗口面板

当你想在窗口中添加GUI组件或绘图时,通过JFrame对象添加的组件或在其上面绘画的内容显示在又JFrame对象管理的窗口面板中。小应用程序也是如此:概括地讲。窗口面板是一个包含描述窗口区域的对象,他们呢来自几种不同的类型。

我们将使用个大家都称为内容面板的窗口面板。而不使用其他的面板:contcntPane对象之间、其他窗口面板与应用程序本身的关系显示在这里。dc7c3cbd58d665dfa0091295c71bc428.png

正像你所看到的,在JFrame窗口中标题栏下面的区域对应JRootPane对象,这个对象包含了其他的面板。说明中的layeredPane对象是JlayeredPane类型的。这个面板对应窗口中JRootPane对象占据的整个区域。如果窗口有菜单栏的话,还要进行管理。

layerPane中菜单栏下面的区域就是contentPane对象,最典型地是在这里添加GUI组件:你还可以在内容面板覆盖的区域显示文字或进行任何绘画。layeredPane对象拥有特别的属性供高级应用程序使用,它允许使用而板中组件组覆盖另一个组件组的分层方式进行竹理。使用这种功能,你可以控制组件与另一个组件的关联显示。在这里,因为层按从后向前的特定顺序显示,所以。在层中前面的组件将位于屏幕该层的后面。

还有一个辅助的面板没有显示在示意图,这就是glassPane对象。这个对象也对应全部的JRootPane区域。g1assPane象的内容显示在所有其他面板的顶层,因此,这个类可用来很示你想要永远显示在窗口中其他内容之上的组件,例如下拉式菜单、你也可以使用glassPane显示需要频繁更新的图形,如建立动画,当你显示示的内容是动画时,静态的背景可以通过contentPane单独地进行显示。由于每次动画对象需要重画时不需要重新处理背景,所以整个过程效率要高得多。

JIFrame类定义了几个方法以供你引用们几何面板:fc7d7b26bcfbc413cd9097f0bc8c2e4e.png

这里讨论的表示面板的所有类本身都是Swing的组件,它们在javax,swing包中定义、JApplet对象与JFrame对象的面板参数相同,所以,向小应用程序添加组件或绘图的操作完全一样由JApplet对象定义的小应用程序,也可以拥有应用程序窗口那样的菜单栏。

所有的面板以及菜单栏都是组件,因此在我们开始研究如何向窗口中添加菜单栏或其他组件之前,先更详细地看看一般组件的组成。

考无忧小编推荐:

更多计算机等级考试真题及答案>>>点击查看

想知道更多关于计算机等级报考指南、考试时间和考试信息的最新资讯在这里>>>

本文网址:http://www.k51.com.cn/info/jsjdjks/1802/0126060.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值