600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 图形化的用户界面——GUI⑧

图形化的用户界面——GUI⑧

时间:2020-04-22 03:53:20

相关推荐

图形化的用户界面——GUI⑧

关于GUI

Swing体系结构AWT体系结构组件概述 AWT事件处理机制AWT事件适配器窗体事件动作事件布局管理器FlowLayout布局管理器BorderLayout布局管理器GridLayout布局管理器GridBagLayout布局管理器CardLayout布局管理器 Graphics类

个人笔记⑧

Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI)

java.awt 包 – 主要提供字体/布局管理器

javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)

java.awt.event 包 – 事件处理,后台功能的实现。

Swing体系结构

swing在awt基础上,建立的一套图形界面系统,提供更多组件。AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT 的Java程序,其运行速度比较慢。

Swing的插人式界面样式由一个基于Smalltalk的“模型-视图-控制器(Model-View-Controller,MVC)”设计的组件体系结构和用于管理界面样式的下层构件组成。

swing组件主要可分为三个部分

(1)顶层容器::常用有JFrame,JDialog

(2)中间容器:JPanel,JOptionPane,JScrollPane,JLayeredPane 等,主要以panel结尾。

(3)基本组件:JLabel,JButton,JTextField,JPasswordField,JRadioButton 等。

AWT体系结构

AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交互的接口。也就是说,当我们利用 AWT 来构件图形用户界面的时候,我们实际上是在利用操作系统所提供的图形库。

组件概述

1.组件

组件(component)是构成图形用户界面的基本成分和核心元素,组件类(Component)是一个抽象类,是AWT组件类的根类,实际使用的组件都是Component的子类。

2.容器

容器(container)是一种特殊组件,他能容纳其他组件。它在可视区域内显示其他组件。由于容器是组件,在容器中还可以放置其他容器,所以可以使用多层容器构成富有变化的界面。

3.窗口和面板

容器有两种:窗口(window)和面板(panel).

窗口可独立存在,可被移动,也可被最大化和最小化,有标题栏,边框,可添加菜单栏。面板不能独立存在,必须包含在另一个容器中,面板没有标题。没有边框,不可以添加菜单栏,一个窗口可以包含多个面板,一个面板也可以包含另一个面板,但面板不能包含窗口。

窗口类和面板类都是容器类的子类。

4.框架与对话框

窗口类(Window)主要有两个子类:框架类(Frame)和对话框类(Dialog)。

框架是一种带标题栏并且可以改变的大小的窗口,在应用程序中,使用框架作为容器,在框架中放置组件。框架类在实例化时默认是最小化的,不可见的,必须通过setSize()方法设置框架大小,通过setVisible()方法使框架可见。

5.标签

标签类(Label)组件用于显示一行文本信息。标签只能显示信息,不能用于输入。

6.按钮

按钮(button)是最常用的组件,用来控制程序的运行方向,用户单击按钮时,计算机将执行一系列命令,完成一系列功能

按钮通过java.awt的Button类创建。

7.文本编辑组件

文本编辑组件有文本行和文本区。

文本行是一个单行文本编辑框,用于输入一行文字。文本行由java.awt包中的TextField类来创建。

Swing组件的关系图

习题

1、

下列组件中,不属于Container类的子类的是( )

A、Panel

B、Button

C、Window

D、Dialog

2、下列选项中,哪个不是Component的子类( )

A、Button

B、Dialog

C、Label

D、MenuBar

AWT事件处理机制

事件[Event]:用户对组件的一个操作,称之为一个事件;

事件源[Listener]:发生事件的组件就是事件源;

监听器:

事件处理:负责处理事件的方法;

事件监听机制的关系图

习题

1、想实现事件的监听机制,首先需要( )

A、通过addWindowListener()方法为事件源注册事件监听器对象

B、事件监听器调用相应的方法来处理相应的事件

C、定义一个类实现事件监听器的接口

D、实现WindowListener

2、事件处理机制能够让图形界面响应用户的操作,主要包括()

A、事件

B、事件处理

C、事件源

D、以上都是

AWT事件适配器

适配器类:接收窗口事件的抽象适配器类,此类中方法为空,此类创建的目的是为了方便创建监听器对象。

第一层是EventListener顶层事件接口类,它只是定义了一个接口,没有包含任何接口函数。

第二层是AWT的事件监听器接口(以Listener为结尾),每一个监听器接口对应一种窗口事件,其中定义了多个事件处理函数。

第三层是AWT的事件适配器抽象类(以Adapter为结尾),它们分别为对应的监听器接口提供了默认的函数实现。

实例

习题

1、下列选项中,不属于适配器类的是( )

A、WindowAdapter

B、MouseAdapter

C、KeyAdapter

D、AdapterActivator

窗体事件

关于窗体事件的监听

1.添加 窗口事件监听器: addWindowListener( new 自定义的窗口监听器对象

2.自定义 窗口监听器类,此类要实现一个java awt窗口监听器的接口( 名为WindowListener )

实例

点击窗体的X,实现关闭功能

拓展:在监听接口的方法只有两个以内,都没有适配器类

动作事件

动作事件(ActionEvent)

ActionEvent包含一个事件,该事件为执行动作事件ACTION_PERFORMED.触发这个事件的动作为:

1》点击按钮。

2》双击列表中选项。

3》选择菜单项。

4》在文本框中输入回车。

习题

1、处理ActionEvent事件的监听器对象需要实现哪个接口( )

A、ActionListener

B、KeyListener

C、KeyEvent

D、KeyAdapter

2、下列选项中,用于表示动作事件的类是?()

A、KeyListener

B、KeyEvent

C、ActionEvent

D、MenuKeyEvent

3、ActionEvent的对象会被传递给以下哪个事件处理器方法()

A、addChangeListener()

B、addActionListener()

C、stateChanged()

D、actionPerformed()

布局管理器

容器中的组件排放方式,就是布局。

在使用 Swing 向容器添加组件时,需要考虑组件的位置和大小。为了加快开发速度,Java 提供了一些布局管理器,它们可以将组件进行统一管理,这样开发人员就不需要考虑组件是否会重叠等问题。介绍 Swing 提供的 5种布局类型,所有布局都实现 LayoutManager 接口。

AWT提供了以下5种布局管理器类:

FlowLayout布局管理器

FlowLayout(流式布局管理器)是 JPanel 和 JApplet 的默认布局管理器。FlowLayout 会将组件按照从上到下、从左到右的放置规律逐行进行定位。与其他布局管理器不同的是,FlowLayout 布局管理器不限制它所管理组件的大小,而是允许它们有自己的最佳大小。(从左至右,不够换行至下一行第一个位置)

FlowLayout 布局管理器的构造方法如下。

FlowLayout():创建一个布局管理器,使用默认的居中对齐方式和默认 5 像素的水平和垂直间隔。

FlowLayout(int align):创建一个布局管理器,使用默认 5 像素的水平和垂直间隔。其中,align 表示组件的对齐方式,对齐的值必须是 FlowLayoutLEFT、FlowLayout.RIGHT 和 FlowLayout.CENTER,指定组件在这一行的位置是居左对齐、居右对齐或居中对齐。

FlowLayout(int align, int hgap,int vgap):创建一个布局管理器,其中 align 表示组件的对齐方式;hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。

()布局管理器使容器中各个构件呈网格布局,平均占据容器空间。

A、FlowLayout

B、BorderLayout

C、GridLayout

D、CardLayout

BorderLayout布局管理器

BorderLayout(边框布局管理器)是 Window、JFrame 和 JDialog 的默认布局管理器。边框布局管理器将窗口分为 5 个区域:North、South、East、West 和 Center。其中,North 表示北,将占据面板的上方;Soufe 表示南,将占据面板的下方;East表示东,将占据面板的右侧;West 表示西,将占据面板的左侧;中间区域 Center 是在东、南、西、北都填满后剩下的区域

BorderLayout 布局管理器的构造方法如下所示。

BorderLayout():创建一个 Border 布局,组件之间没有间隙。

BorderLayout(int hgap,int vgap):创建一个 Border 布局,其中 hgap 表示组件之间的横向间隔;vgap 表示组件之间的纵向间隔,单位是像素。

布局示意图

实例

GridLayout布局管理器

GridLayout(网格布局管理器)为组件的放置位置提供了更大的灵活性。它将区域分割成行数(rows)和列数(columns)的网格状布局,组件按照由左至右、由上而下的次序排列填充到各个单元格中。

GridLayout 的构造方法如下。

GridLayout(int rows,int cols):创建一个指定行(rows)和列(cols)的网格布局。布局中所有组件的大小一样,组件之间没有间隔。

GridLayout(int rows,int cols,int hgap,int vgap):创建一个指定行(rows)和列(cols)的网格布局,并且可以指定组件之间横向(hgap)和纵向(vgap)的间隔,单位是像素。

GridBagLayout布局管理器

GridBagLayout(网格包布局管理器)是在网格基础上提供复杂的布局,是最灵活、 最复杂的布局管理器。GridBagLayout不需要组件的尺寸一致,允许组件扩展到多行多列。每个 GridBagLayout 对象都维护了一组动态的矩形网格单元,每个组件占一个或多个单元,所占有的网格单元称为组件的显示区域。

GridBagLayout 所管理的每个组件都与一个GridBagConstraints约束类的对象相关。

使用GridBagLayout的步骤:

1.创建GridBagLayout对象管理器,

2.创建GridBagConstraints对象,并设置其相关属性

3.调用GridBagLayout对象的setConstraints()方法,来建立GridBagConstraints对象与组件的联系

4.向容器中提那家组件

gridx,gridy(设置网格位置)

设置组件所处行与列的起始坐标。例如gridx=0,gridy=0表示将组件放置在0行0列单元格内。gridwidth 和 gridheight(设置网格占几行几列)

用来指定组件显示区域所占的列数和行数,以网格单元而不是像素为单位,默认值为 1。fill(填充方式)

指定组件填充网格的方式,可以是如下值:GridBagConstraints.NONE(默认值)、GridBagConstraints.HORIZONTAL(组件横向充满显示区域,但是不改变组件高度)、GridBagConstraints.VERTICAL(组件纵向充满显示区域,但是不改变组件宽度)以及 GridBagConstraints.BOTH(组件横向、纵向充满其显示区域)。

4.weightx,weighty

设置窗口变大时的缩放比例。weightx 和 weighty 的取值一般在 0.0 与 1.0 之间,数值大表明组件所在的行或者列将获得更多的空间。

实例

CardLayout布局管理器

CardLayout(卡片布局管理器)能够帮助用户实现多个成员共享同一个显不空间,并且一次只显示一个容器组件的内容。

CardLayout 布局管理器将容器分成许多层,每层的显示空间占据整个容器的大小,但是每层只允许放置一个组件。

实例

习题

1、在CardLayout布局管理中,用于显示parent容器的前一张卡片的方法是( )

A、void previous(Container parent)

B、void show(Container parent,String name)

C、void next(Container parent)

D、void first(Container parent)

2、( )布局管理器使容器中各个构件呈网格布局,平均占据容器空间。

A、FlowLayout

B、BorderLayout

C、GridLayout

D、CardLayout

Graphics类

Java提供的Graphics类用于绘图和显示格式化文字的工具。绘图必须在一个窗口(容器)中进行,Java小程序Applet就是一个窗口。

Graphics类是所有图形上下文的抽象基类,允许应用程序绘制在各种设备上实现的组件,以及屏幕上的图像。

一个Graphics对象封装了Java支持的基本渲染操作所需的状态信息。

setColor

public abstract void setColor(Color c)将此图形上下文的当前颜色设置为指定的颜色。 使用此图形上下文的所有后续图形操作都使用此指定颜色。

drawLine

public abstract void drawLine(int x1,

int y1,

int x2,

int y2)在该图形上下文的坐标系中的点 (x1, y1)和 (x2, y2)之间绘制一条使用当前颜色的线。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。