ImageVerifierCode 换一换
格式:DOCX , 页数:64 ,大小:191.58KB ,
资源ID:8791744      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8791744.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第9章 GUI补充案例.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第9章 GUI补充案例.docx

1、第9章 GUI补充案例第九章 GUI案例9-1 AWT事件处理机制一、案例描述 1、 考核知识点编号:00109002名称:AWT事件处理机制2、 练习目标 掌握如何使用AWT事件处理机制3、 需求分析事件处理机制专门用于响应用户的操作,比如,想要响应用户的点击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。为了让初学者熟悉AWT的事件处理机制,本案例将实现关闭一个窗口的功能。 4、 设计思路(实现原理)1)编写类Example01 2)建立一个窗体,名为“第一个窗体” 3)定义一个类MyWindowListener实现事件监听器的接口WindowListener。 4)通过addWin

2、dowListener()方法为事件源注册事件监听器对象。二、案例实现import java.awt.*;import java.awt.event.*;public class Example01 public static void main(String args) / 建立新窗体 Frame f = new Frame(第一个窗体!); / 设置窗体的宽和高 f.setSize(300, 300); / 设置窗体的出现的位置 f.setLocation(300, 200); / 设置窗体可见 f.setVisible(true); / 为窗口组件注册监听器 MyWindowListen

3、er mw=new MyWindowListener(); f.addWindowListener(mw); / 创建MyWindowListener类实现WindowListener接口class MyWindowListener implements WindowListener / 监听器监听事件对象作出处理 public void windowClosing(WindowEvent e) Window window = e.getWindow(); window.setVisible(false); / 释放窗口 window.dispose(); public void window

4、Activated(WindowEvent e) public void windowClosed(WindowEvent e) public void windowDeactivated(WindowEvent e) public void windowDeiconified(WindowEvent e) public void windowIconified(WindowEvent e) public void windowOpened(WindowEvent e) 运行结果如图9-1所示。图9-1 第一个窗体点击窗体右上角的关闭按钮,窗体关闭。三、案例总结1、在AWT事件处理机制中几个比

5、较重要的相关概念,具体如下所示: 事件对象(Event):封装了GUI组件上发生的特定事件(通常就是用户的一次操作)。 事件源(组件):事件发生的场所,通常就是产生事件的组件。 监听器(Listener):负责监听事件源上发生的事件,并对各种事件做出响应处理的对象(对象中包含事件处理器)。 事件处理器:监听器对象对接收的事件对象进行相应处理的方法。2、事件对象、事件源、监听器、事件处理器在整个事件处理机制中都起着非常重要的作用,它们彼此之间有着非常紧密的联系,接下来用一个图例来描述事件处理的工作流程,如图9-2所示。图9-2 事件处理流程图图9-2中,事件源是一个组件,当用户进行一些操作时,如

6、按下鼠标,或者释放键盘等,这些动作会触发相应的事件。如果事件源注册了事件监听器,则触发的相应事件将会被处理。案例9-2 使用适配器类改进窗体关闭一、案例描述1、 考核知识点编号:00109003名称:AWT事件适配器2、 练习目标 掌握如何使用AWT事件适配器。3、 需求分析JDK提供了一些适配器类,它们是监听器接口的默认实现类,这些实现类中实现了接口的所有方法,但方法中没有任何代码。程序可以通过继承适配器类来达到实现监听器接口的目的。为了让初学者熟悉AWT事件适配器,本案例将使用AWT事件适配器优化窗体关闭代码。4、 设计思路(实现原理)1)编写Example02类2)建立一个窗体,名为“第

7、一个窗体”3)定义一个MyWindowListener类继承适配器类WindowAdapter。4)重写适配器类中的windowClosing()方法二、案例实现import java.awt.*;import java.awt.event.*;public class Example02 public static void main(String args) / 建立新窗体 Frame f = new Frame(第一个窗体!); / 设置窗体的宽和高 f.setSize(300, 300); / 设置窗体的出现的位置 f.setLocation(300, 200); / 设置窗体可见 f

8、.setVisible(true); / 为窗口组件注册监听器 f.addWindowListener(new MyWindowListener(); / 继承WindowAdapter类,重写windowClosing()方法class MyWindowListener extends WindowAdapter public void windowClosing(WindowEvent e) Window window = (Window) e.getComponent(); window.dispose(); 运行结果如图9-3所示。图9-3 运行结果点击窗体右上角的关闭按钮,窗体关闭。

9、三、案例总结在本案例中定义的MyWindowListener类继承了适配器类WindowAdapter,同样实现了关闭窗口的功能,却减少了很多代码。需要注意的是,几乎所有的监听器接口都有对应的适配器类,通过继承适配器类来实现监听器接口时,需要处理哪种事件,直接重写该事件对应的方法即可。由于适配器主要是为了减少不必要的代码,所以在方法数不超过3个时候,不需要继承适配器类。案例9-3 窗体事件一、案例描述1、 考核知识点编号:00109004名称:窗体事件2、 练习目标 掌握窗体事件的处理3、 需求分析当对窗体进行操作时,比如窗体的打开、关闭、激活、停用等,这些动作都属于窗体事件,JDK中提供了一

10、个类WindowEvent用于表示这些窗体事件。为了让初学者掌握窗体事件的处理,本案例将实现对窗体事件的监听。4、 设计思路(实现原理)1) 编写类Example03,创建一个窗体。2) 创建WindowListener实例对象。3) 通过addWindowListener()方法将窗体对象与窗体监听器绑定。4)运行程序,对生成的窗体操作,观察控制台输出的内容。二、案例实现编写Example03类,代码如下所示:import java.awt.*;import java.awt.event.*;public class Example03 public static void main(Str

11、ing args) final Frame f = new Frame(窗体事件); f.setSize(400,300); f.setLocation(300,200); f.setVisible(true); / 使用内部类创建WindowListener实例对象,监听窗体事件 f.addWindowListener(new WindowListener() public void windowOpened(WindowEvent e) System.out.println(窗体打开); public void windowActivated(WindowEvent e) System.o

12、ut.println(窗体激活); public void windowIconified(WindowEvent e) System.out.println(窗体图标化); public void windowDeiconified(WindowEvent e) System.out.println(窗体取消图标化); public void windowDeactivated(WindowEvent e) System.out.println(窗体停用); public void windowClosing(WindowEvent e) System.out.println(窗体正在关闭)

13、; (Window) e.getComponent().dispose(); public void windowClosed(WindowEvent e) System.out.println(窗体关闭); ); 运行结果如图9-4所示。图9-4 运行结果 从上图可以看出,当对窗口进行操作时,程序监听到了这些窗体事件。三、案例总结 在本案例中,通过WindowListener对操作窗口的动作事件进行监听,当接收到特定的动作后,就将所触发事件的名称打印出来。了解了窗体事件,在以后的编程中,可以根据实际需求,在监听器中自定义窗体的处理事件器。案例9-4鼠标事件一、案例描述 1、 考核知识点编号:

14、00109005名称:鼠标事件2、 练习目标 掌握鼠标事件的处理3、 需求分析在图形用户界面中,用户会经常通过鼠标来进行选择、切换界面等操作,这些操作被定义为鼠标事件,JDK中提供了一个MouseEvent类用于表示鼠标事件。为了让初学者熟悉鼠标事件的处理。本案例将演示如何监听鼠标事件。4、 设计思路(实现原理)1) 编写一个类Example04,创建一个窗口。2) 创建按钮对象,并在窗口添加按钮组件。3) 为按钮添加鼠标事件监听器。4) 运行程序生成窗体,用鼠标操作窗口中的按钮,观察控制台的输出。二、案例实现import java.awt.*;import java.awt.event.*;

15、public class Example04 public static void main(String args) final Frame f = new Frame(鼠标事件); / 为窗口设置布局 f.setLayout(new FlowLayout(); f.setSize(300, 200); f.setLocation(300, 200); f.setVisible(true); Button but = new Button(按钮); / 创建按钮对象 f.add(but); / 在窗口添加按钮组件 / 为按钮添加鼠标事件监听器 but.addMouseListener(new

16、 MouseListener() public void mouseReleased(MouseEvent e) System.out.println(鼠标放开); public void mousePressed(MouseEvent e) System.out.println(鼠标按下); public void mouseExited(MouseEvent e) System.out.println(鼠标移出按钮区域); public void mouseEntered(MouseEvent e) System.out.println(鼠标进入按钮区域); public void mou

17、seClicked(MouseEvent e) System.out.println(鼠标完成点击); ); 运行程序后生成窗体如图9-5所示。图9-5 鼠标事件窗体用鼠标点击按钮,运行结果如图9-6所示。图9-6 运行结果三、案例总结除了本案例中演示的鼠标事件,MouseEvent类中定义了很多常量来标识鼠标动作,具体代码如下。public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTON1) System.out.println(鼠标左击事件); if(e.getButton()=e.BUTTON3) System.out.

18、println(鼠标右击事件); if(e.getButton()=e.BUTTON2) System.out.println(鼠标中键点击事件); MouseEvent类中针对鼠标的按键都定义了对应的常量,可以通过MouseEvent对象的getButton()方法获取被操作按键的常量键值,从而判断是哪个按键的操作。另外,鼠标的点击次数也可以通过MouseEvent对象的getClickCount()方法获取到。案例9-5 键盘事件一、案例描述1、 考核知识点编号:00109006名称:键盘事件2、 练习目标 掌握键盘事件的处理3、 需求分析键盘操作是常用的用户交互方式,例如键盘按下、释放等

19、,这些操作被定义为键盘事件,JDK中提供了一个KeyEvent类表示键盘事件。为了让初学者掌握键盘事件的处理,本案例将演示如何监听键盘事件。4、 设计思路(实现原理) 1)编写类Example05,创建一个窗体。2)在窗体中创建文本框对象。3)为文本框添加键盘事件监听器4)运行程序,在窗体的文本框中输入内容,观察控制台的输出情况二、案例实现import java.awt.*;import java.awt.event.*;public class Example05 public static void main(String args) Frame f = new Frame(键盘事件);

20、f.setLayout(new FlowLayout(); f.setSize(400, 300); f.setLocation(300, 200); TextField tf = new TextField(30); / 创建文本框对象 f.add(tf); / 在窗口中添加文本框组件 f.setVisible(true); / 为文本框添加键盘事件监听器 tf.addKeyListener(new KeyAdapter() public void keyPressed(KeyEvent e) int KeyCode = e.getKeyCode(); / 返回所按键对应的整数值 Strin

21、g s = KeyEvent.getKeyText(KeyCode); / 返回按键的字符串描述 System.out.print(输入内容为: + s + ,); System.out.println(KeyCode为: + KeyCode); ); 运行结果如图9-7所示。图9-7 键盘事件在文本框中输入“”,控制台输出如图9-8所示。图9-8 运行结果三、案例总结本案例中,当在图9-7中的文件框中键入字符时,便触发了键盘事件。这时,KeyEvent类通过调用getKeyCode()方法将输入内容对应的整数值返回,即keyCode。在KeyEvent类中还有一个静态方法getKeyText

22、(int keyCode),它可以将按键内容以String形式返回。案例9-6 FlowLayout布局管理器一、案例描述1、 考核知识点编号:00109008名称:FlowLayout布局管理器2、 练习目标 掌握FlowLayout布局管理器的使用3、 需求分析流式布局管理器是最简单的布局管理器,在这种布局下,容器会将组件按照添加顺序从左向右放置。为了让初学者熟悉流式布局管理器,本案例将演示FlowLayout布局管理器的用法。4、 设计思路(实现原理)1) 编写类Example06,创建一个名为“流式布局”的窗体。2) 设置窗体中的布局管理器为FlowLayout。3) 创建1个按钮,并

23、为按钮添加点击事件,每点击一次按钮就再生成新的按钮。二、案例实现import java.awt.*;import java.awt.event.*;public class Example06 public static void main(String args) final Frame f = new Frame(流式布局);/ 创建一个名为流式布局的窗体 / 设置窗体中的布局管理器为FlowLayout,所有组件左对齐,水平间距为25,垂直间距为25 f.setLayout(new FlowLayout(FlowLayout.LEFT, 25, 25); f.setSize(200, 3

24、00); / 设置窗体大小 f.setLocation(300, 200); / 设置窗体显示的位置 Button but1 = new Button(1);/ 创建第1个按钮 f.add(but1); / 把第1个按钮添加到f窗口 / 下面的代码是每点击一次“1”就向窗体中添加一个按钮 but1.addActionListener(new ActionListener() / 动作事件为第1个按钮添加点击事件 private int num = 1; / 定义变量num,记录按钮的个数 public void actionPerformed(ActionEvent e) f.add(new

25、Button(+num);/ 向窗体中添加新按钮 / f.setVisible(true); / 刷新窗体显示新按钮 ); f.setVisible(true); / 设置窗体可见 运行结果如图3-8所示。 图9-9 运行结果三、案例总结1、FlowLayout布局管理器的特点就是可以将所有组件像流水一样依次进行排列,不需要用户明确的设定,但是在灵活性上相对差了点。2、FlowLayout对象有三个构造方法,如下表所示。方法声明功能描述FlowLayout()组件默认居中对齐,水平、垂直间距默认为5个单位FlowLayout(int align)指定组件相对于容器的对齐方式,水平、垂直间距默认

26、为5个单位FlowLayout(int align,int hgap,int vgap)指定组件的对齐方式和水平、垂直间距案例9-7 BorderLayout布局管理器一、案例描述1、 考核知识点编号:00109009名称:BorderLayout布局管理器2、 练习目标 掌握BorderLayout布局管理器的使用3、 需求分析BorderLayout(边界布局管理器)是一种较为复杂的布局方式,它将容器划分为五个区域,分别是东(EAST)、南(SOUTH)、西(WEST)、北(NORTH)、中(CENTER)。为了让初学者熟悉BorderLayout布局,本案例演示一下BorderLayou

27、t布局管理器对组件布局的效果。4、 设计思路(实现原理)1) 编写类Example07,创建一个名为“边界布局”的窗体2) 设置窗体中的布局管理器为BorderLayout3) 创建5个按钮,分别用于填充BorderLayout的5个区域4) 将创建好的按钮添加到窗体中,并设置按钮所在的区域二、案例实现import java.awt.*;public class Example07 public static void main(String args) final Frame f = new Frame(边界布局); f.setLayout(new BorderLayout(); / 设置窗

28、体中的布局管理器 f.setSize(300,300); f.setLocation(300, 200); f.setVisible(true); Button but1 = new Button(东); / 创建新按钮 Button but2 = new Button(西); Button but3 = new Button(南); Button but4 = new Button(北); Button but5 = new Button(中); f.add(but1,BorderLayout.EAST); / 设置按钮所在区域 f.add(but2,BorderLayout.WEST);

29、f.add(but3,BorderLayout.SOUTH); f.add(but4,BorderLayout.NORTH); f.add(but5,BorderLayout.CENTER); 运行结果如图9-10所示。图9-10 运行结果三、案例总结1、在BorderLayout布局管理器中,组件组件可以被放置在这五个区域的中任意一个。BorderLayout布局的效果如图9-11所示。图9-11 BorderLayout效果图BorderLayout的好处就是可以限定各区域的边界,当用户改变容器窗口大小时,各个组件的相对位置不变。但需要注意的是,向BorderLayout的布局管理器添加组件时,如果不指定添加到哪个区域,则默认添加

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

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