第6章 Java图形用户界面
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– Frame():创建一个不含标题的标准窗口 – Frame(String Title): 创建一个含有标题的窗口, 这个标题是由参数title指定的。
• 当一个Frame窗口被创建以后,需要调用 setSize()方法来设置窗口的大小,并调用 setVisible()来显示窗口。
17
容器 - 面板
Y坐标轴
22
创建一个框架:Frame类
创建Frame对象
方法一:通过Frame类构造Frame对象
Frame frameObj=new Frame(“窗口标题”); 方法二:从Frame类继承得到Frame对象 ……extends Frame
……
super(“窗口标题”);
23
标签
Label类的构造方法 Label() Label(String str) Label(String str,int align)
目标
• 了解 AWT 包
• 掌握AWT包常用组件
• 掌握如何创建 GUI 程序
• 掌握窗口界面常用布局管理器的使用
• 掌握事件处理机制及常用事件的实现方法
12
抽象窗口工具箱(AWT)
• 图形用户界面(GUI)可以通过键盘或鼠标来响应用 户的操作。
• 抽象窗口工具包(AWT)是一组Java类,此组Java类 允许创建图形用户界面(GUI)。 AWT包提供的类大致上可以归纳成4大类: AWT创建的前端程序的外观在不同操作平台上是不 • 图形界面组件,如:窗口、按钮、菜单等。 2D同的 图形绘制组件,如:直线、圆形。 布局对象:用来安排图形界面组件的位置。 事件处理对象,用来处理图形界面组件所触发的事件。
文本行
一种用来输入文本的GUI组件 只能接受一行输入
主要功能 创建一个空的文本框 创建一个空的文本框,具有指定列数 创建一个包含有指定“text”内容文本框 创建一个包含有指定列数和“text”内容的文本 框
TextField类的方法
主要功能
获得文本框的内容 获得文本框的列数
String getText()
标签 标签不可以被用户编辑
主要功能 创建一个没有文字的标签 创建一个以str为文字的标签
通常用来指明项目的用途
创建一个以str为文字的标签,并以align为对齐 方式,其中Label.LEFT、Label.CENTER、 Label.RIGHT分别为居左、居中和居右 主要功能 返回标签内文字的对齐方式 设置标签内文字的对齐方式 获得标签内的文字 设置标签内的文字
引言
回顾过去几章程序的输出界面
用户界面的类型:
字符用户界面(CUI) 图形用户界面(GUI)
1
图形用户界面
文本域 标签 复选框
单选按钮 文本区
按钮
2
第6章 Java图形用户界面
6.1 通过图形界面输入数据初始化Human对象
知识要点
图形用户界面 事件处理机制 布局管理
[实例] 在图形界面的窗口中,读入姓 名,并初始化一个Human对象。
14
AWT组件
• 组件指可以放置在用户界面上的任何东西, 可以将组件设置为可见或重新调整其大小。 • AWT支持的组件:标签、文本域、文本区、 按钮、复选框、选择框等。 • 高级组件包括滚动条、滚动窗格和对话框。 • 向窗口加入一个组件:首先生成所需组件的 实例,然后调用add()方法,此方法是在 Container类中定义的。
3.源代码 public InstanceOfHuman(){ setLayout(new FlowLayout()); add(namelabel); add(nametextfield); add(okbutton); add(out); okbutton.addActionListener(this); setSize(400,100); show(); } public void actionPerformed(ActionEvent a){ Human p = new Human(nametextfield.getText()); out.setText("I am " + p.name); }
2) 事件处理机制
图形用户界面通过事件机制实现用户和程序的交互。
3) 布局管理
将加入到容器(通常为窗口等) 的组件按照一定的顺序 和规则放置,使之看起来更美观,这就是布局。布 局由布局管理器 (Layout Manager) 来管理。
6. 问题与思考
1) 本节实例和例子中的类InstanceOfHuman都 从Frame继承过来,能从Panel继承吗?为什么? 2) 在图形界面的窗口中,读入姓名、性别、 出生年月,并利用以下Human的构造方法 Human(String name, String gender,String birth) 初始化一个Human对象。为防止用户输入错 误,用单选按钮输入性别,再对gender分别 赋予"m"或"f"。
21
主要功能 创建没有标题的窗口 创建以title为标题的窗口 主要功能 获得Frame窗口的状态(Frame.Normal表示一般状态, Frame.ICONIFIED表示最小化状态) 设置Frame窗口的状态(Frame.Normal表示一般状态, Frame.ICONIFIED表示最小化状态) 获得Frame窗口的标题 设置Frame窗口的标题 测试Frame窗口是否可以改变大小 设置Frame窗口是否可以改变大小 返回窗口的最小化图标 设置窗口的最小化图标为img
2.编码实现
3) 按钮的监听
语句:
okbutton.addActionListener(this);
4) 窗口调整
语句:
setSize(400,100); show();
5) 处理ActionEvent事件的方法actionPerformed()
语句:
public void actionPerformed(ActionEvent a){ Human p = new Human(nametextfield.getText()); out.setText("I am " + p.name); }
int getColumns()
void setText(String text) 设置文本框的内容为text
void setColumns(int columns)
25
设置文本框的列数
标签和文本行使用示例
import java.awt.*; class TextLabelDemo extends Frame { 新建一个标签 Label lblName=new Label(“名称 :”); TextField txtName=new TextField(20); 新建一个文本 public TextLabelDemo (String title) { 域 super(title); setLayout(new FlowLayout()); add(lblName); 添加到窗口 add(txtName); } public static void main(String args[]) { TextLabelDemo t=new TextLabelDemo("正在测试组件!"); t.setSize(300,200); t.show(); } }
1.详细设计
class InstanceOfHuman extends Frame implements ActionListener{ 窗口中各个对象的定义; public InstanceOfHuman(){ 图形界面的布局; 按钮的监听; 窗口调整; } 处理ActionEvent事件的方法actionPerformed(); }
18
基本组件-panel和frame间的关系
窗口 panel
按钮
19Байду номын сангаас
Frame
• 在Java中,顶层窗口称为框架。在AWT库中 ,对应于框架的类是Frame
20
创建一个框架:Frame类
Frame类的构造方法 Frame() Frame(String title) Frame类的方法 Int getState() void setState(int state) String getTitle() void setTitle(String title) boolean isResizable() void setResizable(boolean r) Image getIconImage() void setIconImage(Image img)
Label类的方法 Int getAlignment() Void setAlignment(int align)
String getText() Void setText(String text)
24
文本框
TextField类的构造方法 TextField() TextField(int columns) TextField(String text) TextField(String text,int culumns)
13
java.awt 包中的类体系结构
Java.lang.Objec t MenuCompone nt MenuBar MenuItem Component Container Label Button FileDialog TextComponent CheckBox TextField TextArea Menu Window Panel Frame Dialog
建立窗口Frame类的操作
创建窗口的基本和必要操作包括以下方面:
(1)可以设置窗口的大小setSize()。 (2)给窗口一个标题setTitle()。 (3)在屏幕的某个位置放置窗口setLocation()。 (4)显示窗口setVisible (true)。 (0,0) X坐标轴 (5)关闭窗口dispose()。
2.编码实现
1) 引入java.awt 和java.awt.event包
语句:
import java.awt.*; import java.awt.event.*;
class InstanceOfHuman extends Frame implements ActionListener{ Label namelabel = new Label("姓名"); TextField nametextfield = new TextField(10); Button okbutton = new Button("确定"); Label out = new Label(" ");
4.测试与运行
测试程序如下: public class InstanceOfHumanTest { public static void main(String args[]) { new InstanceOfHuman(); } }
5.技术分析
1) 图形用户界面
Java的包java.awt中有AWT(Abstract Window Toolkit)负 责生成各种标准图形界面和处理界面的各种事件。
• 面板是可以将许多组件组合起来的一种容器。 • 面板不是一个单独的窗口,它只是包含在窗口中 的一个区域。与Frame不同的是,Panel对象必须 被放入Window和Frame中才可见 • 最简单的创建面板的方式就是通过面板的构造方 法 Panel() 来进行。 • 通常是使用add()方法将Panel添加到Window和 Frame中 •
3.源代码
import java.awt.*; import java.awt.event.*;
class InstanceOfHuman extends Frame implements ActionListener{
Label namelabel = new Label("姓名"); TextField nametextfield = new TextField(10); Button okbutton = new Button("确定"); Label out = new Label(" ");
15
容器
• 可以存放组件的区域,可在容器上进行 绘制和着色 • java.awt包中的Container类可直接或间接派 生出两个类型的常用容器:窗口 (Window)和面板(Panel)。
16
容器 – 框架
• 框架是独立于Applet和浏览器的一个窗口。 • 框架是一个带有边框的独立的窗口。 • 可以通过以下任一构造函数来创建:
• 当一个Frame窗口被创建以后,需要调用 setSize()方法来设置窗口的大小,并调用 setVisible()来显示窗口。
17
容器 - 面板
Y坐标轴
22
创建一个框架:Frame类
创建Frame对象
方法一:通过Frame类构造Frame对象
Frame frameObj=new Frame(“窗口标题”); 方法二:从Frame类继承得到Frame对象 ……extends Frame
……
super(“窗口标题”);
23
标签
Label类的构造方法 Label() Label(String str) Label(String str,int align)
目标
• 了解 AWT 包
• 掌握AWT包常用组件
• 掌握如何创建 GUI 程序
• 掌握窗口界面常用布局管理器的使用
• 掌握事件处理机制及常用事件的实现方法
12
抽象窗口工具箱(AWT)
• 图形用户界面(GUI)可以通过键盘或鼠标来响应用 户的操作。
• 抽象窗口工具包(AWT)是一组Java类,此组Java类 允许创建图形用户界面(GUI)。 AWT包提供的类大致上可以归纳成4大类: AWT创建的前端程序的外观在不同操作平台上是不 • 图形界面组件,如:窗口、按钮、菜单等。 2D同的 图形绘制组件,如:直线、圆形。 布局对象:用来安排图形界面组件的位置。 事件处理对象,用来处理图形界面组件所触发的事件。
文本行
一种用来输入文本的GUI组件 只能接受一行输入
主要功能 创建一个空的文本框 创建一个空的文本框,具有指定列数 创建一个包含有指定“text”内容文本框 创建一个包含有指定列数和“text”内容的文本 框
TextField类的方法
主要功能
获得文本框的内容 获得文本框的列数
String getText()
标签 标签不可以被用户编辑
主要功能 创建一个没有文字的标签 创建一个以str为文字的标签
通常用来指明项目的用途
创建一个以str为文字的标签,并以align为对齐 方式,其中Label.LEFT、Label.CENTER、 Label.RIGHT分别为居左、居中和居右 主要功能 返回标签内文字的对齐方式 设置标签内文字的对齐方式 获得标签内的文字 设置标签内的文字
引言
回顾过去几章程序的输出界面
用户界面的类型:
字符用户界面(CUI) 图形用户界面(GUI)
1
图形用户界面
文本域 标签 复选框
单选按钮 文本区
按钮
2
第6章 Java图形用户界面
6.1 通过图形界面输入数据初始化Human对象
知识要点
图形用户界面 事件处理机制 布局管理
[实例] 在图形界面的窗口中,读入姓 名,并初始化一个Human对象。
14
AWT组件
• 组件指可以放置在用户界面上的任何东西, 可以将组件设置为可见或重新调整其大小。 • AWT支持的组件:标签、文本域、文本区、 按钮、复选框、选择框等。 • 高级组件包括滚动条、滚动窗格和对话框。 • 向窗口加入一个组件:首先生成所需组件的 实例,然后调用add()方法,此方法是在 Container类中定义的。
3.源代码 public InstanceOfHuman(){ setLayout(new FlowLayout()); add(namelabel); add(nametextfield); add(okbutton); add(out); okbutton.addActionListener(this); setSize(400,100); show(); } public void actionPerformed(ActionEvent a){ Human p = new Human(nametextfield.getText()); out.setText("I am " + p.name); }
2) 事件处理机制
图形用户界面通过事件机制实现用户和程序的交互。
3) 布局管理
将加入到容器(通常为窗口等) 的组件按照一定的顺序 和规则放置,使之看起来更美观,这就是布局。布 局由布局管理器 (Layout Manager) 来管理。
6. 问题与思考
1) 本节实例和例子中的类InstanceOfHuman都 从Frame继承过来,能从Panel继承吗?为什么? 2) 在图形界面的窗口中,读入姓名、性别、 出生年月,并利用以下Human的构造方法 Human(String name, String gender,String birth) 初始化一个Human对象。为防止用户输入错 误,用单选按钮输入性别,再对gender分别 赋予"m"或"f"。
21
主要功能 创建没有标题的窗口 创建以title为标题的窗口 主要功能 获得Frame窗口的状态(Frame.Normal表示一般状态, Frame.ICONIFIED表示最小化状态) 设置Frame窗口的状态(Frame.Normal表示一般状态, Frame.ICONIFIED表示最小化状态) 获得Frame窗口的标题 设置Frame窗口的标题 测试Frame窗口是否可以改变大小 设置Frame窗口是否可以改变大小 返回窗口的最小化图标 设置窗口的最小化图标为img
2.编码实现
3) 按钮的监听
语句:
okbutton.addActionListener(this);
4) 窗口调整
语句:
setSize(400,100); show();
5) 处理ActionEvent事件的方法actionPerformed()
语句:
public void actionPerformed(ActionEvent a){ Human p = new Human(nametextfield.getText()); out.setText("I am " + p.name); }
int getColumns()
void setText(String text) 设置文本框的内容为text
void setColumns(int columns)
25
设置文本框的列数
标签和文本行使用示例
import java.awt.*; class TextLabelDemo extends Frame { 新建一个标签 Label lblName=new Label(“名称 :”); TextField txtName=new TextField(20); 新建一个文本 public TextLabelDemo (String title) { 域 super(title); setLayout(new FlowLayout()); add(lblName); 添加到窗口 add(txtName); } public static void main(String args[]) { TextLabelDemo t=new TextLabelDemo("正在测试组件!"); t.setSize(300,200); t.show(); } }
1.详细设计
class InstanceOfHuman extends Frame implements ActionListener{ 窗口中各个对象的定义; public InstanceOfHuman(){ 图形界面的布局; 按钮的监听; 窗口调整; } 处理ActionEvent事件的方法actionPerformed(); }
18
基本组件-panel和frame间的关系
窗口 panel
按钮
19Байду номын сангаас
Frame
• 在Java中,顶层窗口称为框架。在AWT库中 ,对应于框架的类是Frame
20
创建一个框架:Frame类
Frame类的构造方法 Frame() Frame(String title) Frame类的方法 Int getState() void setState(int state) String getTitle() void setTitle(String title) boolean isResizable() void setResizable(boolean r) Image getIconImage() void setIconImage(Image img)
Label类的方法 Int getAlignment() Void setAlignment(int align)
String getText() Void setText(String text)
24
文本框
TextField类的构造方法 TextField() TextField(int columns) TextField(String text) TextField(String text,int culumns)
13
java.awt 包中的类体系结构
Java.lang.Objec t MenuCompone nt MenuBar MenuItem Component Container Label Button FileDialog TextComponent CheckBox TextField TextArea Menu Window Panel Frame Dialog
建立窗口Frame类的操作
创建窗口的基本和必要操作包括以下方面:
(1)可以设置窗口的大小setSize()。 (2)给窗口一个标题setTitle()。 (3)在屏幕的某个位置放置窗口setLocation()。 (4)显示窗口setVisible (true)。 (0,0) X坐标轴 (5)关闭窗口dispose()。
2.编码实现
1) 引入java.awt 和java.awt.event包
语句:
import java.awt.*; import java.awt.event.*;
class InstanceOfHuman extends Frame implements ActionListener{ Label namelabel = new Label("姓名"); TextField nametextfield = new TextField(10); Button okbutton = new Button("确定"); Label out = new Label(" ");
4.测试与运行
测试程序如下: public class InstanceOfHumanTest { public static void main(String args[]) { new InstanceOfHuman(); } }
5.技术分析
1) 图形用户界面
Java的包java.awt中有AWT(Abstract Window Toolkit)负 责生成各种标准图形界面和处理界面的各种事件。
• 面板是可以将许多组件组合起来的一种容器。 • 面板不是一个单独的窗口,它只是包含在窗口中 的一个区域。与Frame不同的是,Panel对象必须 被放入Window和Frame中才可见 • 最简单的创建面板的方式就是通过面板的构造方 法 Panel() 来进行。 • 通常是使用add()方法将Panel添加到Window和 Frame中 •
3.源代码
import java.awt.*; import java.awt.event.*;
class InstanceOfHuman extends Frame implements ActionListener{
Label namelabel = new Label("姓名"); TextField nametextfield = new TextField(10); Button okbutton = new Button("确定"); Label out = new Label(" ");
15
容器
• 可以存放组件的区域,可在容器上进行 绘制和着色 • java.awt包中的Container类可直接或间接派 生出两个类型的常用容器:窗口 (Window)和面板(Panel)。
16
容器 – 框架
• 框架是独立于Applet和浏览器的一个窗口。 • 框架是一个带有边框的独立的窗口。 • 可以通过以下任一构造函数来创建: