2021-03-13

事件处理机制

事件处理机制:当某个组件上发生某些操作时,会自动出发一些代码的执行
1.事件: 对鼠标键盘以及其他输入设备的各种操作或者一个活动的发生称为事件。当有事件发生时GUI会把事件封装在对象中如果需要知道事件的某些信息,就可以通过这个对象来获取。
2.事件源:鼠标、键盘以及其他输入设备操作的组件称为事件源。一个事件源可以有多个事件
3.事件处理是指一旦事情发生时需要执行的操作。多个组件需要响应同一个事件,可以注册同一个事件监听器。事件处理方法可以由本类实现,也可由其他类实现。
4.监听器:当事件源上发生某个事件时,事件监听器就会对其经行处理。
5.监听器的注册:将事件监听器绑定在事件源上,当事件源上发生事件时,事件监听器就会执行代码。
具体实现步骤如下:

  • 1.创建事件源组件对象
  • 2.自定义类,实现XXXListener接口,重写方法
  • 3.创建事件监听器对象(自定义类对象)
  • 4.调用事件源组件对象的addXXXListener方法完成注册监听

下面的代码是一个事件处理的例子

public class Listenerdome {
	Frame frame=new Frame("事件测试处理");      //创建窗口
	TextField filed=new TextField(30);       //创建文本框
	Button ok=new Button("确定");             //创建按钮
	public void init() {
		//组装试图
		//监听器
		MyListener mylistener=new MyListener();
		//组装监听器
		ok.addActionListener(mylistener);
		frame.add(filed,BorderLayout.NORTH);
		frame.add(ok);
		frame.pack();
		frame.setVisible(true);
	}
	private class MyListener implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e)
		{
			filed.setText("Hello World");
		}
	}
	public static void main(String[] args) {
		new Listenerdome().init();
	}
}

运行结果如图:
在这里插入图片描述
当点击确定是会出现:
在这里插入图片描述
可以监听鼠标点击某个按钮,然后做出相应处理,也可以监听文本域中的内容:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ContainerEvent;
import java.awt.event.ContainerListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.*;
import javax.swing.text.TextAction;

public class Listenerdome2 {
	public static void main(String[] args) {
		Frame frame=new Frame();
		TextField tf=new TextField(30);     //创建宽度为30的文本框
		Choice names=new Choice();          //创建下拉选项条
		names.add("1");
		names.add("2");
		names.add("3");
		//给文本框创建TextListener,监听内容变化 
		tf.addActionListener(new TextAction(null) {
			@Override
			public void actionPerformed(ActionEvent e) {
				String text=tf.getText();     //将文本的内容付给text
				System.out.println("输入内容为:"+text);
			}
		});
		//给文本框创建ItemListener,监听内容变化
		names.addItemListener(new ItemListener() {
			@Override
			public void itemStateChanged(ItemEvent e) {
				Object item=e.getItem();
				System.out.println("当前选中的条目:"+item);
			}
		});
		//给文本框创建ContainerListener,监听内容变化
		frame.addContainerListener(new ContainerListener() {
			@Override
			public void componentRemoved(ContainerEvent e) {
				Component child=e.getComponent();
				System.out.println("frame中添加的组件是:"+child);
			}
			@Override
			public void componentAdded(ContainerEvent e) {
				// TODO Auto-generated method stub
				
			}
		});
		Box box=Box.createHorizontalBox();    //创建水平box容器
		//组件容器
		box.add(names);
		box.add(tf);
		frame.add(box);
		//设置窗口属性
		frame.pack();
		frame.setVisible(true);
		frame.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
	}
}

这是一个监听文本域的示例:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值