Java事件监听机制

Java中的事件监听机制的定义
Java事件监听机制在Java图形界面编程处常用。我们会对界面做一些操作,比如输入框输入数据,点击登录按钮等等。这些操作被称为事件,当采取这些操作之后,程序会采取一定的措施响应。
1.事件源对象
1)哪些内容可以成为事件原对象呢?
只有容器组件和元素组件可以成为事件源对象。
2)图形界面上如何确定谁是事件源对象呢?
当你的动作发生在哪一个组件上,那么该组件就是事件源对象。
2.事件监听方法
1.事件监听方法是由事件源对象提供的。
2.事件监听方法捕获事件源对象上面的动作,如果有动作发生,则事件监听方法捕获动作,收集事件源对象的信息和动作信息,然后将信息交给事件接口的对象进行处理。

3.事件接口(事件处理类)
事件接口对象拿到信息后,就会根据动作信息,去调用对应的事件处理方法(把动作信息和事件源对象的信息封装到**Event的对象中),执行方法中的代码。

下面我们制定一个小任务,点击一下界面上的按钮,出现一个圆。

思路:
1.构建一个窗体,装上一个start按钮。
2.定义LoginListener事件处理类,该类继承ActionListener动作事件接口,重写接口中的抽象方法。
3.实例化LoginListener事件处理对象。
4.给事件处理类对象添加动作监听方法,指定事件处理类对象。

本例中:
事件源对象:start按钮
事件监听方法:addActionListener(ActionListener 1),动作事件监听方法,捕获类似按钮组件上的鼠标点击动作,然后收集事件源对象的信息和动作信息,接着将信息交给ActionListener接口的对象进行处理。
事件接口(事件处理类):ActionListener;ActionListener的对象拿到事件源对象的信息和动作信息后,就会根据动作信息调用事件处理;方法actionPerformed(ActionEvent e),把信息封装到处理方法的ActionEvent参数对象中,最后执行方法中的代码。

下面是一个简单地例子:

//第一步就简单地构造一个窗体
package Login20190318;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.JButton;
import javax.swing.JFrame;

//Draw类继承JFrame类  相当于Draw类就是JFrame类  直接调用JFram类中的属性和方法
public class Draw extends JFrame
{
	//入口主函数
	public void initUI()
	{
		this.setSize(1500,600);
		FlowLayout flowlayout=new FlowLayout(FlowLayout.CENTER,5,5);
		this.setLayout(flowlayout);
		JButton button=new JButton("Start");
		this.add(button);
		
		this.setVisible(true);
		
		//使窗体获得绘图板权限
		Graphics graphics=this.getGraphics();
		
		//实例化监听方法类  并传入参数
		DrawLis drawlis=new DrawLis(graphics);
	
		//使按钮button调用监听方法
		button.addActionListener(drawlis);
	}
	
	
	
	public static void main(String[] args) 
	{
		//实例化Draw类并调用入口函数
		Draw draw=new Draw();
		draw.initUI();
		
	}

}

//定义事件监听方法的类
package Login20190318;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import java.awt.Graphics;

//实现监听接口
public class DrawLis implements ActionListener
{

	private Graphics g;
	
	//构造方法用于传参
	public DrawLis(Graphics g)
	{
		this.g=g;
	}
	
	//定义监听方法,画一个椭圆
	public void actionPerformed(ActionEvent e)
	{
		Random random = new Random();
		int x=random.nextInt(1600);
		int y=random.nextInt(1600);
		g.fillOval(x,y,60,70);
	}
	
}

这样就达到了点击一下按钮输出一个球的目的!

你可能感兴趣的:(JAVA)