|
Java程序设计辅导资料十一主 题:第六章 图形用户界面的AWT组件等(课件)
“不忘初心、牢记使命”主题理论学习:
每周文摘:守初心,就是要牢记全心全意为人民服务的根本宗旨,以坚定的理想信念坚守初心,牢记人民对美好生活的向往就是我们的奋斗目标;以真挚的人民情怀滋养内心,时刻不忘我们党来自人民、根植人民,人民群众的支持和拥护是我们胜利前进的不竭力量源泉;以牢固的公仆意识践行初心,永远铭记人民是共产党的衣食父母,共产党人是人民的勤务员,永远不能脱离群众、轻视群众、漠视群众疾苦。
摘选自《在“不忘初心、牢记使命”主题教育工作会议上的讲话》
内 容:
我们这周主要学习《Java程序设计》这门课程的第6章关于图形用户界面的AWT组件、事件委托、Swing组件及事件等相关内容。希望通过下面的内容能使同学们对Java图形界面方面的知识有进一步的了解。
知识要点:
Java图形用户界面的概念
Java图形用户界面的特点
AWT组件的概念
AWT组件的功能
容器、窗口、面板
布局管理
事件委托
重点与难点:
重点:AWT组件、Swing组件、布局管理
难点:事件委托的概念及使用AWT组件及其属性
图形用户界面GUI使用图形方式借助菜单、编辑框、按钮等标准界面元素和键盘、鼠标操作,提供应用程序与用户进行数据交流的界面,实现人机交互。应用程序既能够显示数据,也能够获得用户输入的数据和需要执行的命令。构成图形用户界面的基本元素是组件,GUI应用程序的运行过程是事件驱动的。
Java图形用户界面的组件和事件由java.awt和javax.swing包共同提供。Java.awt称为抽象窗口工具集AWT,主要包括组件、事件处理模型、图形和图像工具,布局管理器等,其中的组件通常称为AWT组件。
1、AWT组件
Java.awt包主要由组件类、事件类、布局类、菜单组件类等组成。
组件
组件是构成图形用户界面的基本成分和核心元素.组件是具有以下特性的对象:运行时可见,具有坐标位置、尺寸、字体、颜色等属性,能拥有及管理其他组件,可获得输入焦点可被操作,可响应事件等。
Component组件类是一个抽象类,它是AWT组件类层次结构的根类,实际使用的组件都是Component的子类。Component类提供对组件操作的通用方法,包括:获得或设置组件位置、大小、标题文本字体、标题文本颜色、背景颜色等属性值,响应鼠标或键盘事件,组件绘图等。
Component类及主要方法声明如下:
public abstract class Component implements ImageObserver, MenuContainer, Serializable
{
public int getWidth() //获得组件宽度
public int getHeight() //获得组件高度
public void setSize(int width, int height) //设置组件的宽度和高度
public int getX() //返回组件位置的X坐标
public int getY() //返回组件位置的Y坐标
public void setLocation(int x, int y)
//设置组件坐标位置,x、y指定组件左上角相对于容器的坐标位置
public void setBounds(int x, int y, int width, int height)
//设置组件坐标位置和宽度、高度
public Color getBackground() //获得组件的背景颜色
public void setBackground(Color c) //设置组件的背景颜色
public Font getFont() //获得组件字体
public void setFont(Font f) //设置组件字体
public void setVisible(boolean b) //设置组件是否可见
}
容器
容器是一种特殊的组件,它能容纳其他组件,在其可视区域内显示这些组件。容器中的各组件的大小和位置由容器的布局管理器进行控制。一个容器之中可以放置其他容器,使用多层容器可以表达复杂的布局。
Container容器类是Component组件类的子类,部分声明如下:
public class Container extends Component
{
public void setLayout(LayoutManager mgr) //设置布局管理器
public Component add(Component comp) //在容器中添加组件,用于任何布局
public void remove(Component comp) //从容器中移去指定组件
public void removeAll() //从容器中移去所有组件
}
窗口和面板
容器有窗口和面板两种,对应有Window窗口类和Panel面板类,它们都是Container容器的子类。
窗口有标题栏和关闭控制按钮,有边框,可添加菜单栏;窗口可独立存在,运行时可被移动,可改变大小。窗口是顶层容器,窗口不能包含在其他容器中。Window类声明如下:
public class Window extends Container implements Accessible
面板没有标题,没有边框,不可添加菜单栏;面板不能独立存在,必须包含在其他容器中。一个窗口可以包含多个面板,一个面板可以包含另一个面板。Panel类声明如下:
public class Panel extends Container implements Accssible
{
public Panel() //默认FlowLayout布局
public Panel(LayoutManager layout) //layout指定布局管理器
}
框架和对话框
Window窗口类的子类主要有:Frame框架和Dialog对话框。
Java Application应用程序使用Frame作为主窗口,Frame带有最大化和最小化控制按钮,Frame类声明如下:
public class Frame extends Window implements MenuContainer
{
public Frame()
public Frame(String title) //title指定框架标题
public String getTile() //获取框架标题
public void setTitle(String title) //设置或修改框架标题
public void setResizable(boolean b) //设置框架是否可变大小,b默认true
}
对话框不能作为应用程序的主窗口,它通常依附于一个框架,当框架关闭时,对话框也关闭。对话框界面比框架简单,没有最大化和最小化控制按钮。对话框可以被设置为模式窗口,特点是总在最前面,如果不能关闭模式对话框,则不能对其他窗口进行操作。
Dialog类构造方法的参数必须声明对话框所依附的框架,声明如下:
public class Dialog extends Window
{
public Dialog(Frame owner) //owner指明拥有对话框的框架
public Dialog(Frame owner, String title) //title指定对话框标题
public Dialog(Frame owner, boolean modal) //modal指定模式窗口,默认false
public Dialog(Frame owner, String title, Boolean modal)
}
Framehe Dialog实例默认是白色背景、最小化、不可见的,调用setSize()方法设定窗口大小,调用setBackground()方法设置背景颜色,调用setVisible(true)方法使窗口可见。
按钮
Button按钮用于执行一种特定的操作。Button类及其声明的方法如下:
public class Button extends Component implements Accessibl
{
Public Button(String text) //text指定按钮标题
}
图形用户界面的应用程序运行时所产生的错误和异常,分别由java.awt包中的AWTError和AWTException类处理。二、 布局管理
当一个窗口中的组件比较多时,界面应该简洁整齐,布局合理。Java采用布局管理器(layoutmanager)对容器中的组件进行相对布局,当改变容器大小时,或者改变组件的大小,或者改变组件之间的相对位置,保证组件不会被遮盖并且容器没有空白区域.
Java提供多种风格和特点的布局管理器,每一种布局管理器指定一种组件之间的相对位置。java.awt中的布局管理器类主要有:FlowLayout、BorderLayout和GridLayout。
布局是容器类的特征,每种容器都有一种默认布局。Window窗口类的默认布局是BorderLayout,Panel面板类的默认布局是FlowLayout。如果一个容器需要改变其默认管理器,可以调用Container容器类的setLayout()方法。
1、FlowLayout流布局管理器
FlowLayout布局管理器提供按行布置组件方式,将组件按从左到右顺序、一行一行地排列,当一行放满时再放置到下一行。组件保持自己的尺寸,容器中一行的宽度随容器的宽度而变化。
FlowLayout类的部分声明如下:
public class FlowLayout implements LayoutManager, java.io.Serializable
{
public static final int LEFT=0; //左对齐
public static final int CENTER=1; //居中
public static final int RIGHT=2; //右对齐
public FlowLayout() //构造方法,默认居中
public FlowLayout(int align) //align参数指定对齐方式
public FlowLayout(int align, int hgap, int vgap) //hgap、vgap指定组件间的水平和垂直间距
}
2、BorderLayout边布局管理器
BorderLayout布局管理器将容器划分为5各区域:东、南、西、北四条边和中间,组件占满一条边或中间部分。当改变容器大小时,四边组件的长度或宽度不变,中间组件的长度和宽度都随容器大小而变化。
BorderLayout类的部分声明如下:
public class BorderLayout implements LayoutManager2, java.io.Serializable
{
public static final String NORTH=“North”; //注意,字符串首字母大写
public static final String SOUTH=“South”;
public static final String EAST=“East”;
public static final String WEST=“West”;
public static final String CENTER=“Center”;
public BorderLayout()
public BorderLayout(int hgap, int vgap)
}
3、GridLayout网格布局管理器
GridLayout布局管理器将容器划分为大小相等的若干行乘若干列的网格,组件从左到右、从上到下依次放入网格中,每个组件占满一格。组件大小随容器大小而变化。如果组件数多于网格数,Java将自动增加网格;反之,一些网格将空置。
GridLayout类的部分声明如下:
public class GridLayout implements LayoutManager, java.io.Serializable
{
public GridLayout() //构造方法
public GridLayout(int rows, int cols) //参数指定行、列
public GridLayout(int rows, int cols, int hgap, int vgap)
}
三、 事件委托
事件:用户对程序的某一种功能性操作。
Java中的事件主要有两种:
组件类事件
componentEvent、ContainerEvent、WindowEvent、FocusEvent、PaintEvent、MouseEvent共六大类。
它们均是当组件的状态发生变化时产生。
动作类事件
ActionEvent、TextEvent、AdjustmentEvent、ItemEvent共四类。
Java中的事件类都包含在JDK的 Java.awt.event包中。
事件编程:
用户编程定义每个特定事件发生时程序应做出何种响应,并且这些响应代码会在对应的事件发生时由系统自动调用。
事件委托授权处理模型
JDK1.1以上版本实现了事件委托授权处理模型的机制。
1、事件源:产出事件的组件。
2、监听器:对组件所产生的事件作出具体响应的代吗,即事件产出与处理分别由两个不同类(它们可以分别放在不同的程序中)加以编程实现。
3、事件处理机制:AWT组件自身不编程处理相应的事件,面是交由事件监听器(它可以是组件所在的容器类或另外的Java程序类,只要它们实现了相关的事件监听器接口即可)处理(事件授权处理模型)。
4、事件处理的包:java.awt.event包,它提供AWT事件所需的类和接口。ActionEvent类对应ActionListener接口;
MouseEvent类对应MouseMotionListener接口和MouseListener接口;
WindonEvent类对应WindonListener接口---即发生了XXXEvent类型的事件,那么处理该事件的接口为XXXListener);它们的父类为EventObject类。各个事件类的说明:
EventObject:所有事件类的超类。
最重要的方法-- getSource(),返回产生某事件的对象。
四、 Swing组件及事件
Swing库是AWT库的扩展,提供了比AWT更多的特性和工具,用于建立更复杂的图形用户界面。Java建议用Swing组件代替AWT组件。
AWT组件通常称为重型组件,它在运行时需要一个与平台相关的本地组件为之服务;而Swing组件则不直接使用本地组件,通常称为轻型组件。
1、Swing组件关系概述
javax.swing包提供了许多接口、类和组件,主要类及组件类的继承关系。
框架javax.swing.JFrame继承自java.awt.Frame,对话框javax.swing.JDialog继承自java.awt.Dialog,这两个组件仍然是重型组件;其他Swing组件都是javax.swing.JComponent的子类,JComponent继承自AWT的容器类java.awt.Container,所以Swing组件都是容器。JComponent类声明以下方法,设置组件的文本颜色:
public void setForeground(Color color) //设置文本颜色
2、窗口组件
基于Swing组件的图形用户界面,采用JFrame框架作为主窗口。JFrame和JDialog的用法类似于Frame和Dialog,主要有以下两点差别。
内容窗格
JFrame和JDialog中容纳组件的容器是内容窗格,需要调用以下方法返回内容窗格:
public Container getContentPane()
窗口关闭方式
JFrame和JDialog增加以下setDefaultCloseOperation(int)方法,指定窗口关闭事件的处理方式。
public void setDefaultCloseOperation(int operation)
3、文本显示和编辑组件
JLabel标签是文本显示组件,与java.awt.Label用法相同,增加的功能是,能容纳一个图标ImageIcon。
文本编辑组件主要有:JTextField、JPasswordField和JTextArea。
文本行
JTextField是单行文本编辑框,用法与java.awt.TextField相同,增加以下方法:
public void setHorizontalAlignment(int alignment)
文本区
JTextArea文本区是一个显示纯文本的多行文本编辑框,它的基本操作与文本行类似,但增加了接受换行符的多行控制。文本区JTextArea类及其方法声明如下:
Public class JTextArea JTextComponent
{
public JTextArea()
public JTextArea(String text)
public JTextArea(int rows, int columns)
public JTextArea(String text, int rows, int columns)
public JTextArea(String str)
public JTextArea(String str, int pos)
}
Swing文本编辑事件
文本编辑事件类javax.swing.event.CaretEvent
当用户在JTextField、JTextArea中编辑时,将触发文本编辑事件CaretEvent,每操作一个字符,触发一次该事件。JTextField和JTextArea组件注册文本编辑事件监听器的方法是:
Public void addCaretListener(CaretListener)
文本编辑事件监听器接口CaretListener中只有一个方法caretUpdate(CaretEvent e)。
单击事件类 ActionEvent
在文本行JTextField中,由于只允许输入一行内容,当用户按Enter键时,将会触发ActionEvent单击事件。
4、其他组件
其他诸如按钮组件、列表框和组合框、JoptionPane对话框和JColorChooser对话框、菜单组件和表格,大家去参照教材熟悉一下。例题
一、填空题
1、构成图形用户界面的基本元素是(),GUI应用程序的运行过程是()的。
2、Java图形用户界面的组件和事件由()和()包共同提供。
3、()是一个抽象类,它是AWT组件类层次结构的根类。
4、容器有窗口和面板两种,对应有()和(),它们都是Container容器的子类。
5、Window窗口类的子类主要有:()和()。
6、java.awt中的布局管理器类主要有:()、()和()。
7、Java中的事件主要有两种:()和()。例题答案
一、填空题
组件、事件驱动
java.awt、javax.swing
Component组件类
Window窗口类、Panel面板类
Frame框架、Dialog对话框
FlowLayout、BorderLayout、GridLayout
组件类事件、动作类事件
本内容由易百教育整理发布
网址www.openhelp100.com
QQ 515224986
|
|