Java程序设计修改ch07.docx

上传人:b****5 文档编号:2776085 上传时间:2022-11-15 格式:DOCX 页数:97 大小:475.67KB
下载 相关 举报
Java程序设计修改ch07.docx_第1页
第1页 / 共97页
Java程序设计修改ch07.docx_第2页
第2页 / 共97页
Java程序设计修改ch07.docx_第3页
第3页 / 共97页
Java程序设计修改ch07.docx_第4页
第4页 / 共97页
Java程序设计修改ch07.docx_第5页
第5页 / 共97页
点击查看更多>>
下载资源
资源描述

Java程序设计修改ch07.docx

《Java程序设计修改ch07.docx》由会员分享,可在线阅读,更多相关《Java程序设计修改ch07.docx(97页珍藏版)》请在冰豆网上搜索。

Java程序设计修改ch07.docx

Java程序设计修改ch07

第7章Java图形用户界面GUI

GUI全称是GraphicalUserInterface,即图形用户界面。

是应用程序提供给用户操作的图形界面,包括窗口、菜单、按钮、工具栏和其他各种屏幕元素。

JavaAWT(AbstractWindowToolkit)提供了图形用户界面和图形在Java兼容的操作系统中使用本地窗口系统进行显示。

Sun公司在发布Java1.2时,又结合AWT的优点,编写出完善和稳定的Swing。

Swing包含250多个类,是组件和支持类的集合。

同时提供了40多个组件。

Swing是建立在AWT基础之上的,它用来代替AWT中的重量组件,而不是用来替代AWT本身。

它利用了AWT的底层组件,包括图形、颜色、字体、工具包和布局管理器等。

它使用AWT最好的部分来建立一个新的轻量组件集,而丢弃了AWT中有问题的重量组件部分,同时还提供了大量有助于开发图形用户界面的附加组件。

本章将介绍利用Java的AWT包和Swing包进行图形开发的一般方法。

本章要点

●Swing包中常用组件的用法

●Java中的布局管理器

●Java的事件处理机制

本章难点

●Java的事件处理机制

学习目标

●了解Swing包中组件的基本用法,掌握如命令按扭,文本框,标签框等组件的用法

●了解布局管理器的基本使用,掌握流式布局,边界布局等常用布局的使用

●了解事件处理的基本方法,掌握动作事件,鼠标事件,键盘事件等常用事件的处理方法

7.1抽象窗口工具包(AWT)与javax.swing包概述

7.1.1java.awt包的子包

AWT是JavaAPI的一部分,它为开发图形用户界面提供了实现各种组件、布局管理器和事件处理器的类和接口。

用户在导入了AWT中的包或类后,通过创建组件、布局管理器和事件处理器的对象,就可以设计出所需要的各种形式的图形用户界面。

AWT由下列包所组成,如表7-1所示。

表7-1AWT包

java.awt

包含用于创建用户界面和绘制图形图像的所有类

java.awt.color

提供用于颜色空间的类

java.awt.datatransfer

提供在应用程序之间和在应用程序内部传输数据的接口和类

java.awt.dnd

Drag和Drop是一种直接操作操作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与GUI中显示元素逻辑相关的实体之间传输信息

java.awt.event

提供处理由AWT组件所激发的各类事件的接口和类

java.awt.font

提供与字体相关的类和接口

java.awt.geom

提供用于在与二维几何形状相关的对象上定义和执行操作的Java2D类

java.awt.im

提供输入方法框架所需的类和接口

java.awt.im.spi

提供启用可以与Java运行时环境一起使用的输入方法开发的接口

java.awt.image

提供创建和修改图像的各种类

java.awt.image.renderable

提供用于生成与呈现无关的图像的类和接口

java.awt.print

为通用的打印API提供类和接口

7.1.2javax.swing包

Swing是第二代GUI开发工具集,是构筑在AWT上层的一组GUI组件的集合,为保证可移植性,它完全用Java语言编写,与AWT相比,Swing提供了更完整的组件,引入了许多新的特性和能力。

Swing提供更多的组件库,如:

JButton,JLabel等。

这些增强的组件在Swing中的名称通常都是在AWT组件名前增加了一个“J”字母,如AWT中的Button在Swing中是JButton。

大部分的Swing组件是用Java码直接在画布(canvas)上画出来的。

Swing组件较不依赖目标平台,且使用较少的NativeGUI资源,被称之为轻量级组件,而AWT组件就被称为重量级组件。

当Swing组件和AWT组件重叠在一起时,AWT组件会盖在Swing组件上,若把这两种组件混合着用,结果可能会产生一些bug。

图7-1给出了AWT与Swing的关系图,图7-2列出了Swing组件继承关系图,从图中可看出,Swing的组件都继承Container,也就是说Swing的组件都可当作容器来装其他的组件,而AWT的组件就只是组件而已,上面不能放其他的东西。

图7-1AWT与Swing关系图

图7-2Swing组件继承关系图

从关系图可看见一个重要的事实:

Swing的组件都继承Container,也就是说Swing的组件都可当作容器来装其他的组件,而AWT的组件就只是组件而已,上面不能放其他的东西。

以Button为例,AWT的Button只有两种构造函数:

Button()

Button(Stringlabel)

也就是说Button上面只能放字符串,而JButton就有5种形式,不仅可以放文字,还可以放图片。

JButton()

JButton(Actiona)

JButton(Iconicon)

JButton(Stringtext)

JButton(Stringtext,Iconicon)

AWT组件会耗掉较多的资源,且在跨平台上会有些问题,所以在实际应用中,Swing中的组件用的更多一些,本书也主要以介绍Swing中的组件为主。

7.2常用Swing组件及AWT组件

7.2.1Component(组件)类

java.lang.Object

java.awt.Component

Component类是AWT包中的一个抽象类,通过继承它,可以得到各种功能的组件,Java中的图形组件大多都是Component类的子类。

图形组件能够在屏幕上显示一定的图形,用户可通过这些组件与程序进行信息交互,方便、快捷地设计出可视化的图形用户界面。

JComponet类继承于Component类,我们常用的Swing组件,如JLabel,JButton等都是JComponet类的子类。

由于Component类是所有图形组件类的父类,它包含许多图形组件类共有的成员变量和方法。

1.常用成员变量

LEFT_ALIGNMENT左边对齐方式

RIGHT_ALIGNMENT右边对齐方式

2.构造方法

Component()构造方法

3.常用方法

voidadd(Componentcomp)在容器的末尾添加组件comp

注意:

该方法的参数comp的类为Component,而Component类是所有组件类的父类,即该方法被所有Component类的子类继承。

因此,该方法可用于在任何组件类对象中添加任何组件类对象。

voidsetBackground(Colorcolor)设置背影颜色

voidsetBounds(intx,inty,intw,inth)设置所占矩形的位置和尺寸

voidsetFont(Font)设置字体

voidsetForeground(Colorc)设置前景颜色

voidsetVisible(booleanb)设置组件是否可见。

True可见,false不可见

voidsetLocation(intx,inty)移动组件到左上角位置为(x,y)

voidsetSize(intw,inth)重设组件的大小,其w为宽,h为高

注意:

上述方法定义在Component类中,而Component类是所有组件类的父类,因此这些方法被所有Component类的子类继承。

Component类还定义了许多绘图方法,Component类的绘图方法将在7.4节中介绍。

7.2.2Container(容器类)

java.lang.Object

java.awt.Component

java.awt.Container

Container类是AWT包中的类,主要用来放置其他组件,所以称作“容器”。

由于Container类继承自Component类,所以它既拥有Component类的所有功能,同时,它还具有“容器”的一些特征。

1.构造方法

Container()构造方法

2.常用方法

voidremove(Componentcomp)删除容器中的组件

voidsetLayout(LayoutManagermgr)设置容器的布局管理器为mgr

从图7-1中可以看见,AWT包中容器类的派生子类有:

框架(Frame)、面板(Panel)、窗口(Window)、对话框、(Dialog)等。

7.2.3Swing容器及组件

Swing组件分为顶层容器,中间层容器和基本组件三种类型。

顶层容器有四个,分别是JWindow,JFrame,JDialog,JApplet,这四个顶层容器都是属于重量级组件(Swing中只有这四个是属重量级组件)。

顶层容器的重要性在于:

每一个GUI组件都需被包含在一个顶层容器的包容层级中。

顶层容器可以放入menubar,并且含有一个默认的contentPane可供GUI组件放入其中。

在Swing中有一个特别的类JComponent,作为所有Swing组件的顶层抽象类,里面定义了许多Swing组件共同的特性。

JComponent继承自java.awt.Container。

所以每一个继承自JComponent的Swing组件也都是一种容器。

中间层容器介于顶层容器与一般Swing组件间,是被专门设计来盛装别的组件用的,可以让被承载的组件能合适地,有组织地呈现出来。

常用的中间层容器有JMenuBar,JOptionPane,JPanel等。

有些容器并非一层,而由几层嵌板组成,常用的嵌板有:

拆分嵌板(JSplitPane),内容嵌板,页签式嵌板(TabbedPane)等。

拆分嵌板:

按指定的方向和方式拆分其内的两个子组件,一个拆分嵌板只能拆分两个子组件。

内容嵌板:

JFrame,Jwindow,JDialog是有多层嵌板的容器,如果要在这些容器上面放置组件,必须放置在他们的内容嵌板(pane)上。

通过函数getContentPane()可得到当前容器的内容嵌板。

页签式嵌板:

这个嵌板如同卡片,提供文件夹式的页签,当前只显示一页,如要进入下一页,只要点击上面的页签。

有些如JPanel是可以直接放置组件的容器,所以不需要使用嵌板。

如果要按自己的想法排列放在容器上的组件,我们必须使用到布局管理器(Layout)来进行管理。

布局管理器将在下节中介绍。

1.JFrame(窗体)类

java.lang.Object

java.awt.Component

java.awt.Container

java.awt.Window

java.awt.Frame

javax.swing.JFrame

窗体是一个带有边框、标题栏和菜单的图形容器。

是图形开发中不可缺少的容器之一。

JFrame继承了AWT中的Frame类。

但是,和Frame类不同,我们不能直接在JFrame上增加子部件和设置布局管理器,而且必须先调用JFrame.getContentPane()方法,通过该方法返回JFrame中自带的JRootPane对象,JRootPane是JFrame惟一的子组件,我们只能在这个JRootPane对象上增加子组件和设置布局管理器。

一般我们是先将组件先添加在JPanel上,然后再将JPanel添加到JFrame上。

JFrame类在响应用户关闭窗体时,默认的简单方式是隐藏这个窗体,并没有真正关闭这个窗体。

我们可以在windowClosing事件处理方法中,调用这个窗口对象的d

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1