第9章 GUI_补充案例

2019-04-02 11:45

博学谷——让IT教学更简单,让IT学习更有效

第九章 GUI

案例9-1 AWT事件处理机制

一、案例描述

1、 考核知识点

编号:00109002

名称:AWT事件处理机制

2、 练习目标

? 掌握如何使用AWT事件处理机制

3、 需求分析

事件处理机制专门用于响应用户的操作,比如,想要响应用户的点击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。为了让初学者熟悉AWT的事件处理机制,本案例将实现关闭一个窗口的功能。

4、 设计思路(实现原理)

1)编写类Example01

2)建立一个窗体,名为“第一个窗体”

3)定义一个类MyWindowListener实现事件监听器的接口WindowListener。 4)通过addWindowListener()方法为事件源注册事件监听器对象。

二、案例实现

import java.awt.*; import java.awt.event.*; public class Example01 {

public static void main(String[] args) { }

1

// 建立新窗体

Frame f = new Frame(\第一个窗体!\// 设置窗体的宽和高 f.setSize(300, 300); // 设置窗体的出现的位置 f.setLocation(300, 200); // 设置窗体可见 f.setVisible(true); // 为窗口组件注册监听器 f.addWindowListener(mw);

MyWindowListener mw=new MyWindowListener();

博学谷——让IT教学更简单,让IT学习更有效

}

// 创建MyWindowListener类实现WindowListener接口 class MyWindowListener implements WindowListener { }

// 监听器监听事件对象作出处理

public void windowClosing(WindowEvent e) { }

public void windowActivated(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) { }

Window window = e.getWindow(); window.setVisible(false); // 释放窗口

window.dispose();

运行结果如图9-1所示。

图9-1 第一个窗体

点击窗体右上角的关闭按钮,窗体关闭。

三、案例总结

1、在AWT事件处理机制中几个比较重要的相关概念,具体如下所示: ? 事件对象(Event):封装了GUI组件上发生的特定事件(通常就是用户的一次操作)。 ? 事件源(组件):事件发生的场所,通常就是产生事件的组件。 ? 监听器(Listener):负责监听事件源上发生的事件,并对各种事件做出响应处理的对象(对象中包

2

博学谷——让IT教学更简单,让IT学习更有效

含事件处理器)。

? 事件处理器:监听器对象对接收的事件对象进行相应处理的方法。 2、事件对象、事件源、监听器、事件处理器在整个事件处理机制中都起着非常重要的作用,它们彼此之间有着非常紧密的联系,接下来用一个图例来描述事件处理的工作流程,如图9-2所示。

外部动作事件对象2.触发事件源上的事件3.产生并传递事件对象4.接收事件对象,激活事件处理器,实现预定功能事件源(组件)1.将监听器注册到事件源监听器(含处理器) 图9-2 事件处理流程图 图9-2中,事件源是一个组件,当用户进行一些操作时,如按下鼠标,或者释放键盘等,这些动作会触发相应的事件。如果事件源注册了事件监听器,则触发的相应事件将会被处理。

案例9-2 使用适配器类改进窗体关闭 一、案例描述

1、 考核知识点

编号:00109003

名称:AWT事件适配器

2、 练习目标

? 掌握如何使用AWT事件适配器。

3、 需求分析

JDK提供了一些适配器类,它们是监听器接口的默认实现类,这些实现类中实现了接口的所有方法,但方法中没有任何代码。程序可以通过继承适配器类来达到实现监听器接口的目的。为了让初学者熟悉AWT事件适配器,本案例将使用AWT事件适配器优化窗体关闭代码。

4、 设计思路(实现原理)

1)编写Example02类

2)建立一个窗体,名为“第一个窗体”

3)定义一个MyWindowListener类继承适配器类WindowAdapter。 4)重写适配器类中的windowClosing()方法

二、案例实现

import java.awt.*; import java.awt.event.*; public class Example02 {

3

博学谷——让IT教学更简单,让IT学习更有效

}

// 继承WindowAdapter类,重写windowClosing()方法 class MyWindowListener extends WindowAdapter { }

public void windowClosing(WindowEvent e) { }

Window window = (Window) e.getComponent(); window.dispose();

public static void main(String[] args) { }

// 建立新窗体

Frame f = new Frame(\第一个窗体!\// 设置窗体的宽和高 f.setSize(300, 300); // 设置窗体的出现的位置 f.setLocation(300, 200); // 设置窗体可见 f.setVisible(true); // 为窗口组件注册监听器

f.addWindowListener(new MyWindowListener());

运行结果如图9-3所示。

图9-3 运行结果

点击窗体右上角的关闭按钮,窗体关闭。

三、案例总结

在本案例中定义的MyWindowListener类继承了适配器类WindowAdapter,同样实现了关闭窗口的功能,却减少了很多代码。需要注意的是,几乎所有的监听器接口都有对应的适配器类,通过继承适配器类来实现监听器接口时,需要处理哪种事件,直接重写该事件对应的方法即可。由于适配器主要是为了减少不必要的代码,所以在方法数不超过3个时候,不需要继承适配器类。

4

博学谷——让IT教学更简单,让IT学习更有效

案例9-3 窗体事件 一、案例描述

1、 考核知识点

编号:00109004 名称:窗体事件

2、 练习目标

? 掌握窗体事件的处理

3、 需求分析

当对窗体进行操作时,比如窗体的打开、关闭、激活、停用等,这些动作都属于窗体事件,JDK中提供了一个类WindowEvent用于表示这些窗体事件。为了让初学者掌握窗体事件的处理,本案例将实现对窗体事件的监听。

4、 设计思路(实现原理)

1) 编写类Example03,创建一个窗体。 2) 创建WindowListener实例对象。

3) 通过addWindowListener()方法将窗体对象与窗体监听器绑定。 4)运行程序,对生成的窗体操作,观察控制台输出的内容。

二、案例实现

编写Example03类,代码如下所示:

import java.awt.*; import java.awt.event.*; public class Example03 {

public static void main(String[] args) {

final Frame f = new Frame(\窗体事件\f.setSize(400,300); f.setLocation(300,200); f.setVisible(true);

f.addWindowListener(new WindowListener() {

public void windowOpened(WindowEvent e) { }

public void windowActivated(WindowEvent e) {

}

public void windowIconified(WindowEvent e) { }

public void windowDeiconified(WindowEvent e) {

5

System.out.println(\窗体图标化\System.out.println(\窗体激活\System.out.println(\窗体打开\

// 使用内部类创建WindowListener实例对象,监听窗体事件


第9章 GUI_补充案例.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电力工程施工安全与管理对策探讨

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: