《Java语言》课件第7章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《Java语言》课件第7章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java语言 Java 语言 课件
- 资源描述:
-
1、第第7章章 图形用户界面的设计与实现图形用户界面的设计与实现7.1 图形用户界面核心概念图形用户界面核心概念7.2 容器与布局管理容器与布局管理7.3 常用常用GUI标准组件标准组件7.4 鼠标和键盘事件鼠标和键盘事件7.5 菜单的使用菜单的使用7.6 对话框的使用对话框的使用7.1 图形用户界面核心概念图形用户界面核心概念-示例示例 容器容器-可以容纳可以容纳GUI部件(按某种布局)部件(按某种布局)-窗体窗体、面板、面板 部件部件-部署在容器中,实现某种交互。部署在容器中,实现某种交互。-文本框、按纽、标签等文本框、按纽、标签等GUI部件部件 图形用户界面核心概念图形用户界面核心概念 创建
2、窗体创建窗体方法方法1:Frame f=new Frame(“标题标题“)方法方法2:class MyFrame extends Frame .Frame f=new MyFrame(“标题标题“)图形用户界面核心概念图形用户界面核心概念 创建创建GUI部件部件 创建文本框、按钮、标签创建文本框、按钮、标签 TextField x=new TextField(10);Button b=new Button(“ok”);Label dis=new Label(“hint”);图形用户界面核心概念图形用户界面核心概念 布局设置布局设置setLayout(new FlowLayout()加入部件加入
3、部件 add(部件对象部件对象1););add(部件对象部件对象2););.图形用户界面核心概念图形用户界面核心概念 将部件加入窗体容器将部件加入窗体容器 处理事件处理事件事件处理事件处理-委托事件处理模型委托事件处理模型 事件源事件源-发生事件发生事件 事件监听者事件监听者-处理事件处理事件 -符合相应接口要求符合相应接口要求图形用户界面核心概念图形用户界面核心概念事件处理事件处理事件委托处理事件委托处理图图图形用户界面核心概念图形用户界面核心概念事件处理事件处理 委托事件处理委托事件处理-过程过程(1)给)给事件源对象事件源对象注册监听者注册监听者 button.addActionList
4、ener(ActionListener a);(2)给)给监听者监听者编写事件处理代码编写事件处理代码 public void actionPerformed(ActionEvent e)图形用户界面核心概念图形用户界面核心概念事件处理事件处理(1)事件源对象的容器类作为监听者)事件源对象的容器类作为监听者 addActionListener(this);(2)用内嵌类实现)用内嵌类实现 addActionListener(new Process();谁作为监听者合适谁作为监听者合适?-要其要其actionPerformed中方便访问事件处理相关对象中方便访问事件处理相关对象(3)用匿名内嵌类
5、实现)用匿名内嵌类实现 addActionListener(new ActionListener().);图形用户界面核心概念图形用户界面核心概念 演练例子演练例子 编程改变编程改变Applet背景的颜色背景的颜色,在在Applet中安排一个中安排一个按钮,每次点击按钮随机换一种新颜色。按钮,每次点击按钮随机换一种新颜色。图形用户界面核心概念图形用户界面核心概念提示提示:颜色由三色构成颜色由三色构成:red,green,blue (0-255)new Color(red,green,blue)用用setBackground(Color)设置背景设置背景 作业作业 编写一个窗体应用程序,在窗体中
6、安排一个标编写一个窗体应用程序,在窗体中安排一个标签和一个按钮,在标签上显示按钮的点击次数。签和一个按钮,在标签上显示按钮的点击次数。标签初始显示标签初始显示0,以后每点击一次按钮,标签上,以后每点击一次按钮,标签上显示的数值增显示的数值增1。图形用户界面核心概念图形用户界面核心概念区分事件源区分事件源 编写一个窗体应用程序,在窗体中安排两个文编写一个窗体应用程序,在窗体中安排两个文本框,一个标签,两个标记为本框,一个标签,两个标记为“+”和和“*”的按钮,的按钮,从两个文本框输入两个数,从两个文本框输入两个数,点击点击“+”按钮按钮将文本将文本框中两个数进行加法运算,结果显示在标签中框中两个
7、数进行加法运算,结果显示在标签中;点点击击“*”按钮按钮将文本框中两个数进行减法运算,结将文本框中两个数进行减法运算,结果显示在标签中。果显示在标签中。在动作事件处理代码中区分事件源在动作事件处理代码中区分事件源 getSource()用来获取事件源对象。用来获取事件源对象。getActionCommand()结果为字符串,用来获取按钮事件对象的命令名结果为字符串,用来获取按钮事件对象的命令名 -ActionEvent对象提供方法对象提供方法图形用户界面核心概念图形用户界面核心概念事件处理事件处理 关键代码关键代码public void actionPerformed(ActionEvent
8、e)int x1=Integer.parseInt(f1.getText();int x2=Integer.parseInt(f2.getText();if(e.getActionCommand().equals(“+”)res.setText(+(x1+x2);else res.setText(+(x1*x2);7.1.6 关于事件适配器类关于事件适配器类 Java中为那些具有多个方法的监听者接口提供了中为那些具有多个方法的监听者接口提供了事件适配器类,这个类通常命名为事件适配器类,这个类通常命名为XxxAdapter,在该类中以空方法体实现了相应接口的所有方法,在该类中以空方法体实现了相应
9、接口的所有方法,程序员设计可通过继承适配器类来编写监听者类,程序员设计可通过继承适配器类来编写监听者类,在类中只需给出关心的方法,从而减轻工作量。在类中只需给出关心的方法,从而减轻工作量。例例7-3 处理窗体的关闭处理窗体的关闭 import java.awt.*;import java.awt.event.*;import java.applet.*;public class TestFrame extends Applet public void init()new MyFrame();class Demo extends Frame implements ActionListener B
10、utton btn;public Demo()super(MY WINDOWS);btn=new Button(关闭关闭);setLayout(new FlowLayout();add(btn);btn.addActionListener(this);addWindowListener(new closeWin();setSize(300,200);setVisible(true);public static void main(String args)new Demo();例例7-3 处理窗体的关闭处理窗体的关闭 public void actionPerformed(ActionEvent
11、 e)if(e.getActionCommand()=关闭关闭)dispose();class closeWin extends WindowAdapter public void windowClosing(WindowEvent e)Window w=e.getWindow();w.dispose();上机练习上机练习 设有一批英文单词存放在一个数组中,编制设有一批英文单词存放在一个数组中,编制一个图形界面程序浏览单词。在界面中安排一一个图形界面程序浏览单词。在界面中安排一个标签显示单词,另有个标签显示单词,另有“上一个上一个”、“下一个下一个”两个按钮实现单词的前后翻动。两个按钮实现单词
12、的前后翻动。7.2 布局管理布局管理 FlowLayout(流式布局流式布局)BorderLayout(边缘或方位布局边缘或方位布局)GridLayout(网格布局网格布局)CardLayout(卡片式布局卡片式布局)GridBagLayout(网格块布局网格块布局)布局管理布局管理-FlowLayout(流式布局流式布局)-是是Panel的默认布局的默认布局 从上到下、左到右排放,放不下再换至下一行从上到下、左到右排放,放不下再换至下一行 -不会改变控件的大小不会改变控件的大小。按照参数要求安排部件间的纵横间隔纵横间隔和对齐方式对齐方式 public FlowLayout()居中对齐方式,组
13、件纵横间隔5个像素。public FlowLayout(int align,int hgap,int vgap)3个参数分别指定对齐方式、纵、横间距 public FlowLayout(int align)参数规定对齐方式对齐方式,组件纵横间距纵横间距默认5个像素。布局布局管理管理布局管理布局管理-BorderLayout(边缘或方位布局边缘或方位布局)-是是Frame的默认布局的默认布局 将容器内部空间分为东(将容器内部空间分为东(East)、南()、南(South)、西)、西(West)、北()、北(North)、中()、中(Center)五个区域)五个区域 布局布局管理管理BorderL
14、ayout(边缘或方位布局边缘或方位布局)控件的大小随容器大小改变。控件的大小随容器大小改变。按照参数要求安排部件间的纵横间隔纵横间隔和对齐方式对齐方式 public BorderLayout()()各组件之间的纵横间距为各组件之间的纵横间距为0 public BorderLayout(int hgap,int vgap)2个参数分别指定纵、横间距个参数分别指定纵、横间距 加入组件加入组件add(方位名字符串方位名字符串,组件组件)布局管理布局管理GridLayout布局布局 把容器的空间分为若干行乘若干列的网格区域 组件按从左向右,从上到下的次序被加到各单元格中 组件的大小将调整为与单元格大
15、小相同。布局管理布局管理GridLayout构造方法构造方法 public GridLayout()所有组件在一行中。public GridLayout(int rows,int cols)通过参数指定布局的行和列数。public GridLayout(int rows,int cols,int hgaps,int vgaps)指定划分的行列数以及组件间的水平和垂直间距。布局管理布局管理 GridLayout布局布局加入组件加入组件 add(组件名组件名)public void init()this.setLayout(new GridLayout(3,3,10,10);for (int i=
16、1;i=9;i+)this.add(new Button(Button#+i);布局布局管理管理如何布局如何布局?CardLayout布局布局 加入的部件叠成卡片的形式加入的部件叠成卡片的形式 构造方法构造方法 public CardLayout()显示组件将占满整个容器,不留边界不留边界。public CardLayout(int hgap,int vgap)容器边界分别留出水平和垂直间隔,组件占中央。组件加入组件加入 add(字符串字符串,组件名组件名)其中,字符串用来标识卡片名称。布局布局管理管理CardLayout布局布局-卡片翻动卡片翻动 show(容器容器,字符串字符串):显示指定
17、名称的卡片:显示指定名称的卡片 first(容器容器):显示第一块卡片:显示第一块卡片 last(容器容器):显示最后一块卡片:显示最后一块卡片 next(容器容器):显示下一块卡片:显示下一块卡片 布局管理布局管理常常用用GUI标准组件标准组件Component类类(抽象类)抽象类)Color getBackground():获取部件的背景色获取部件的背景色 Font getFont():获取部件的显示字体获取部件的显示字体 Graphics getGraphics():获取部件的获取部件的Graphics属性对象属性对象 void repaint(int x,int y,int width
18、,int height):对部件的特定对部件的特定区域进行重新绘图区域进行重新绘图 void setBackground(Color c):设置部件的背景设置部件的背景 void setEnabled(boolean b):是否让部件功能有效,在无是否让部件功能有效,在无效情况下部件变灰效情况下部件变灰 void setFont(Font f):设置部件的显示字体设置部件的显示字体 void setSize(int width,int height):设置部件的大小设置部件的大小 void setVisible(boolean b):设置部件是否可见设置部件是否可见 void setForeg
19、round(Color c):设置部件的前景色设置部件的前景色 void requestFocus():让部件得到焦点让部件得到焦点 void add(PopupMenu popup):给部件加入弹出菜单:给部件加入弹出菜单 常常用用GUI标准组件标准组件文本框文本框(TextField)文本框只能编辑一行数据文本框只能编辑一行数据构造方法有四种构造方法有四种:TextField():构造一个单行文本输入框。:构造一个单行文本输入框。TextField(int):指定长度的单行文本输入框。:指定长度的单行文本输入框。TextField(String):指定初始内容的单行文本输入框。:指定初始内
20、容的单行文本输入框。TextField(String,int):指定长度、指定初始内容。:指定长度、指定初始内容。常常用用GUI标准组件标准组件 tf1=new TextField();tf2=new TextField(,20);tf3=new TextField(Hello!);tf4=new TextField(Hello,30);常用方法常用方法:setEchoChar(*)设置回显字符设置回显字符 getText():获取输入框中的数据:获取输入框中的数据 setText():往输入框写入数据:往输入框写入数据 isEditable():判断输入框是否可编辑。:判断输入框是否可编辑。
21、文本框文本框(TextField)文本框文本框(TextField)-事件事件 ActionEvent事件事件-在文本框按回车键时引发在文本框按回车键时引发 注册:addActionListener();接口:ActionListener 方法:public void actionPerformed(ActionEvent e)TextEvent事件事件-对文本输入部件数据更改操作对文本输入部件数据更改操作 (添加、修改、删除)(添加、修改、删除)注册:注册:addTextListener()()接口:接口:TextListener方法:方法:public void textValueChan
22、ged(TextEvent e)常常用用GUI标准组件标准组件 练习练习:验证密码域只能输入数字字符验证密码域只能输入数字字符public void textValueChanged(TextEvent e)String s=pass.getText();char last=s.charAt(s.length()-1);if(!Character.isDigit(last)hint.setText(只能是数字,重输:只能是数字,重输:);pass.setText();文本域文本域(TextArea)特点特点1:可以编辑多行文字:可以编辑多行文字 构造方法有四种构造方法有四种:TextArea(
23、):构造一个文本域。TextArea(int,int):构造一个指定长度和宽度的文本域。TextArea(String):构造一个显示指定文字的文本域。TextArea(String,int,int):按指定长度、宽度和默认值构造多行文本域。特点特点2:在已有内容的基础上补充新数据:在已有内容的基础上补充新数据append(String s):将字符串添加到文本域的末尾 insert(String s,int index):将字符串插入到文本域的指定位置 常常用用GUI标准组件标准组件 思考练习思考练习 在图形界面中,安排一个文本框和文本域。将在图形界面中,安排一个文本框和文本域。将文本框键入
24、的字符同时显示在文本域中,也既同文本框键入的字符同时显示在文本域中,也既同步显示。步显示。常常用用GUI标准组件标准组件1.选择事件选择事件(ItemEvent)类类 public ItemSelectable getItemSelectable()public Object getItem()public int getStateChange()返回值:ItemEvent.SELECTED:代表选项被选中。代表选项被选中。ItemEvent.DESELECTED:代表选项被放弃不选。:代表选项被放弃不选。常常用用GUI标准组件标准组件2复选按钮复选按钮(Checkbox)举例举例:Check
25、box backg=new Checkbox(背景色背景色);常用方法常用方法 boolean getState():获取复选按钮的选中状态,返回获取复选按钮的选中状态,返回true代表按钮被选中代表按钮被选中 void setState(boolean value):设置复选按钮的状态,:设置复选按钮的状态,vlaue为为true表示选中。表示选中。事件响应事件响应 itemStateChanged(ItemEvent e)方法方法 通过通过 e.getItemSelectable()获得事件源对象引用获得事件源对象引用 调用调用 getState()获取事件获取事件 源对象的状态。源对象的
展开阅读全文