学习笔记二十五:事件处理(一)

人类要在竞争中求生存,更要奋斗。——孙中山

本讲内容:事件处理

导入包:

import java.awt.event.*;

一、事件分为两大类:低级事件和高级事件。

1、低级事件包括以下几种

事件类别 接口名 描述
ComponentEvent  组件事件 ComponentListener 发生于组件大小改变、移动、显示或隐藏时
ContainerEvent  容器事件 ContainerListener 发生于添加或删除一个组件时
WindowEvent  窗口事件 WindowListener 窗口被激活、屏蔽、最小最 大化、或关闭
MouseEvent  鼠标事件 MouseEventListener 鼠标按键被按下、释放、鼠标移动或拖动
KeyEvent  键盘事件 KeyListener 键盘上的一个键被按下或释放
FocusEvent  焦点事件 FocusEvent 发生于组件获得焦点或者失去焦点时

2、高级事件包括以下几种

事件类别 接口名 描述
ActionEvent   动作事件 ActionListener 发生于按钮单击、菜单选择、列表框选择、在文本域中按“回车”等时
AdjustmentEvent 调整事件 AdjustmentListener 发生于用户在滚动条上移动滑块以调节数值时
ItemEvent 项目事件 ItemListener 发生于用户从一组选择框或者列表框中进行选择
TextEvent 文本事件 TextListener 发生于文本域或者文本框中的内容发生改变时

例一:两个按钮实现相应事件

public class Text extends JFrame implements ActionListener{
	JPanel mb=null;
	JButton an1,an2;

	public static void main(String[] args) {
		Text t=new Text();
	}

	public Text() {
		mb=new JPanel();
		mb.setBackground(Color.yellow);
		an1=new JButton("红色");
		an1.addActionListener(this);//注册监听
		an1.setActionCommand("rea");//指定action命令
		an2=new JButton("蓝色");
		an2.addActionListener(this);
		an2.setActionCommand("blue");

		this.add(an1,BorderLayout.NORTH);
		this.add(an2,BorderLayout.SOUTH);
		this.add(mb);

		//设置窗体属性
		this.setTitle("技术大牛—小劲");
		this.setLocation(300, 300);
		this.setSize(400,400);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("rea")){
			mb.setBackground(Color.red);
		}else if(e.getActionCommand().equals("blue")){
			mb.setBackground(Color.blue);
		}
	}
}

方法二(也可以获得监听事件)

public class Text extends JFrame {
	JPanel mb=null;
	JButton an1,an2;

	public static void main(String[] args) {
		Text t=new Text();
	}

	public Text() {
		mb=new JPanel();
		mb.setBackground(Color.yellow);
		an1=new JButton("红色");
		an2=new JButton("蓝色");
		MyListener listener=new MyListener();
		an1.addActionListener(listener);//注册监听
		an1.setActionCommand("red");//指定action命令
		an2.addActionListener(listener);
		an2.setActionCommand("blue");

		this.add(an1,BorderLayout.NORTH);
		this.add(an2,BorderLayout.SOUTH);
		this.add(mb);

		//设置窗体属性
		this.setTitle("技术大牛—小劲");
		this.setLocation(300, 300);
		this.setSize(400,400);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

class MyListener implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("red")){
			System.out.println("red");
		}else if(e.getActionCommand().equals("blue")){
			System.out.println("blue");
		}
	}
}

例二:一个长方形按键盘上下左右会动

public class Text extends JFrame {
	MyPanel mb=null;

	public static void main(String[] args) {
		Text t=new Text();//每定义一个 t 都会产生一个对应的this
	}

	public Text() {
		mb=new MyPanel();
		this.add(mb);
		this.addKeyListener(mb);//添加监听    键盘监听这个类所定义的对象  用mp对象进行监听

		//设置窗体属性
		this.setTitle("技术大牛—小劲");
		this.setLocation(300, 300);
		this.setSize(400,400);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

class MyPanel extends JPanel implements KeyListener{
	int x=100,y=100;
	public void paint(Graphics g) {
		super.paint(g);
		g.setColor(Color.red);
		g.fillRect(x, y, 10, 10);
	}

	//键被按下
	public void keyPressed(KeyEvent e) {
//		System.out.println("1");
		if(e.getKeyCode()==KeyEvent.VK_UP){
			y--;
		}else if(e.getKeyCode()==KeyEvent.VK_DOWN){
			y++;
		}else if(e.getKeyCode()==KeyEvent.VK_LEFT){
			x--;
		}else if(e.getKeyCode()==KeyEvent.VK_RIGHT){
			x++;
		}
		//调用 repaint() 函数,来重绘制界面
		this.repaint();
	}

	//键被释放
	public void keyReleased(KeyEvent e) {
		System.out.println("键被释放");
	}

	<span style="color:#ff0000;">//键的一个值被打印输出(上下左右键等不会执行,因为没打印出)</span>
	public void keyTyped(KeyEvent e) {
		System.out.println("其它键会执行,上下左右键等不会执行,因为没打印出");
	}
}

本讲就到这里,Take your time and enjoy it

时间: 2025-01-14 14:56:38

学习笔记二十五:事件处理(一)的相关文章

马哥学习笔记二十五——ISCSI协议,架构及其安装配置

ISCSI监听在tcp/3260端口 iSCSI Target:iscsi-target-utils 客户端认正方式: 1.基于IP 2.基于用户,CHAP tgtadm:命令行工具,模式化命令 --mode 常用模式:target,logicalunit,account target --op new.delete.show.update.bind.unbind logicalunit --op new.delete account --op new.delete.bind.unbind --

Android学习笔记二十五之ListView多布局实现

Android学习笔记二十五之ListView多布局实现 这一节是介绍ListView这个控件的最后一节,实现一个Item的多布局.像我们经常在用的各种即时通讯工具,QQ.微信等,假设他们的会话界面是ListView实现的,那么ListView就有多种Item布局,这一节,我们就来实现一个ListView的多种Item. 要实现ListView里面有多种Item,就要重写适配器的两个方法getViewTypeCount()和getItemViewType(int position),第一个方法是

angular学习笔记(二十五)-$http(3)-转换请求和响应格式

本篇主要讲解$http(config)的config中的tranformRequest项和transformResponse项 1. transformRequest: $http({ transformRequest: function(data){ //对前台发送的data进行处理 return data } }) 这个在测试的时候遇到了很大的问题.只要经过transformRequest函数处理,哪怕是不做任何处理,node后台都会报错,需要尝试使用php 2. transformResp

Java基础学习笔记二十五 MySQL

MySQL 在dos中操作mysql 连接mysql命令: mysql -uroot -p密码 ,连接OK,会出现mysql> 对数据库的操作 创建一个库 create database 库名 create database 库名 character set 编码 mysql> create database mybase; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+

[傅里叶变换及其应用学习笔记] 二十五. 线性系统,传递函数,特征值

矩阵卷积,离散有限维线性时不变系统 与上一节课连续无限维线性时不变系统有相同的描述:当且仅当线性算符是用卷积表达的,该系统才是线性时不变系统(LTI system). $\underline{w} = Av = \underline{h}* \underline{v}$ 上述等式表达了离散有限维的线性时不变系统,它能表达成脉冲响应与输入的矩阵乘积,也能表达成矩阵间的卷积. 下面我们通过一个例子加深对线性时不变系统的理解. 例,假设有LTI系统 $\underline{w} = Av = \und

Android学习笔记二十五.Service组件入门(三)使用IntentService

使用IntentService 1.Service缺陷 由于Service本身存在以下两个问题: (1)Service不会专门启动一条单独的进程,Service与他所在应用位于同一进程中: (2)Service也不是专门一条新的线程,如果我们在Service中直接处理耗时的任务,那么就会导致应用程序出现假性"卡死".如果我们需要在Service处理耗时任务,也可以在Service的onCreate()方法中启动一条新线程来处理该耗时任务(如上例).但是,问题来了,启动Service的A

PHP学习笔记二十五【类的继承】

<?php //定义父类 class Stu{ public $name; protected $age; protected $grade; private $address;//私有变量不会被继承 //当一个子类的方法和父类的方法完全一样,称为方法的重写 public function __construct(){ echo "Stu 构造函数"; } public function showInfo() { echo $this->name."||"

Linux学习笔记&lt;二十五&gt;——openssh服务

ssh:Secure SHell ssh特点: 基于TCP22号端口: 密文认证: 密文传输数据 openssh是ssh的开源实现,支持ssh v1和ssh v2 但ssh v1无法解决中间层攻击,建议不要使用 客户端: Linux:ssh Windows:putty,SecureCRT,SSHSecureShellClient,Xmanager 服务器端: Linux:sshd openssh相关命令 1.ssh -X:enable X11 forwarding -Y:enable trust

Linux学习笔记&lt;二十五&gt;——openssl服务

openssl服务:SSL的开源实现,官方站点 www.openssl.org 组成: libcrypto:通用加密库 libssl:TLS/SSL的实现库 基于会话的,实现了身份认证,数据机密性和会话完整性的TLS/SSL库 openssl:多用途命令工具 可以实现私有证书颁发机构 openssl常用子命令: openssl version:查看openssl的版本 [[email protected] named]# openssl version OpenSSL 0.9.8e-fips-r