本文共 2963 字,大约阅读时间需要 9 分钟。
例如上一节讲到的运行窗口无法关闭就是因为按钮的点击功能没有实现,如果想要关闭窗口就需要事件处理机制对窗口进行监听。
事件处理机制专门用于响应用户的操作,比如,客户想要点击鼠标,按下键盘等操作,就需要用到AWT事件处理机制。在学习AWT事件处理机制前需要了解几个重要的概念。
~事件对象:封装了GUI组件上发生的特定事件,
~事件源(组件):事件发生的场所,通常就是指产生时间的组件。
~监听器:负责监听事件源上发生的事件,并对各种事件作出相应处理的对象。
~事件处理器:监听器对象对接收的时间对象进行相应处理的方法。
在程序中如果想要实现事件的监听机制,首先需要定义一个类实现事件监听器的接口,例如Window类需要定义WindowListener()方法作为事件源注册事件监听器对象。
接下来代码为例:
import java.awt.*;import java.awt.event.*;public class Main{ public static void main(String[] args)throws Exception{ Frame f=new Frame("我的窗体");//设置窗体名称 f.setSize(400, 300);//设置宽和高 f.setLocation(300, 200);//设置在屏幕中所属位置 f.setVisible(true);//设置窗体可见 MyWindowListener mw=new MyWindowListener(); f.addWindowListener(mw); }}class MyWindowListener implements WindowListener{ public void windowClosing(WindowEvent e){ Window window=e.getWindow(); window.setVisible(false); window.dispose(); } 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){ }}
首先创建一个实现了WindowListener接口的事件监听器类MyWindowListener,并且将窗口与监听器绑定,从而实现了窗口关闭闭的功能
在上一个程序中MyWindowListener类实现了接口中的七个方法,但实际用到的只有一个方法,这明显是一种多余而又必需的工作。针对这样的问题JDK提供了一些适配器,这些适配器实现了接口中所有的方法,但方法内并没有任何代码,想要调用哪个方法知己重写该方法即可
代码为例:
import java.awt.*;import java.awt.event.*;public class Main{ public static void main(String[] args)throws Exception{ Frame f=new Frame("我的窗体");//设置窗体名称 f.setSize(400, 300);//设置宽和高 f.setLocation(300, 200);//设置在屏幕中所属位置 f.setVisible(true);//设置窗体可见 f.addWindowListener(new MyWindowListener()); }}class MyWindowListener extends WindowAdapter{ public void windowClosing(WindowEvent e){ Window window=(Window)e.getComponent(); window.dispose(); }}
虽然在上一个程序中使用事件适配器实现了窗口关闭的功能,但是在实际开发中为了代码的简洁,经常使用匿名内部类创建事件监听器,针对所发生的事进行处理
程序为例:
第一种方法:
import java.awt.*;import java.awt.event.*;public class Main{ public static void main(String[] args)throws Exception{ Frame f=new Frame("我的窗体");//设置窗体名称 f.setSize(400, 300);//设置宽和高 f.setLocation(300, 200);//设置在屏幕中所属位置 f.setVisible(true);//设置窗体可见 f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ Window window=(Window)e.getComponent(); window.dispose(); } }); }}
也可以使用第二种方法也就是在窗口中加入一个按钮点击按钮关闭程序
代码如下:
import java.awt.*;import java.awt.event.*;public class Main{ public static void main(String[] args)throws Exception{ Frame f=new Frame("我的窗体");//设置窗体名称 f.setSize(400, 300);//设置宽和高 f.setLocation(300, 200);//设置在屏幕中所属位置 f.setVisible(true);//设置窗体可见 Button btn=new Button("点击退出"); f.add(btn); btn.addMouseListener(new MouseAdapter(){ public void mouseClicked(MouseEvent e){ System.exit(0); } }); }}
转载地址:http://ouohn.baihongyu.com/