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

在这个并非尽善尽美的世界上,勤奋会得到报偿,而游手好闲则要受到惩罚。——毛姆

本讲内容:MouseEvent 、MouseMotionListener

一、MouseEvent   让鼠标能知道鼠标按下的消息、知道点击的位置等五个方法。

MouseMotionListener鼠标拖动坐标、鼠标移动坐标二个方法。

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.addMouseListener(mb);//添加监听
		this.addMouseMotionListener(mb);
		this.add(mb);

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

class MyPanel extends JPanel implements MouseListener,MouseMotionListener{
	public void paint(Graphics g) {
		super.paint(g);
	}

	//MouseListener  接口方法
	//鼠标被点击(鼠标按下然后松开后执行)
	public void mouseClicked(MouseEvent e) {
		System.out.println("鼠标点击了 x="+e.getX()+"y="+e.getY());
	}

	//鼠标移动到MyPanel
	public void mouseEntered(MouseEvent e) {
		System.out.println("鼠标移动到MyPanel");
	}

	//鼠标离开MyPanel
	public void mouseExited(MouseEvent e) {
		System.out.println("鼠标离开MyPanel");
	}

	//鼠标按下
	public void mousePressed(MouseEvent e) {
		System.out.println("鼠标按下");
	}

	//鼠标松开
	public void mouseReleased(MouseEvent e) {
		System.out.println("鼠标松开");
	}

	//MouseMotionListener  接口方法
	//鼠标拖动
	public void mouseDragged(MouseEvent e) {
		System.out.println("鼠标拖拽的当前坐标  x="+e.getX()+"y="+e.getY());
	}

	//鼠标移动
	public void mouseMoved(MouseEvent e) {
		System.out.println("鼠标当前坐标  x="+e.getX()+"y="+e.getY());
	}
}

二、KeyListener 键盘事件有三个方法。WindowListener 窗口事件有七个方法。

public class Text extends JFrame {
	MyPanel mb=null;

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

	public Text() {
		mb=new MyPanel();
		this.addKeyListener(mb);
		this.addWindowListener(mb);
		this.add(mb);

		//设置窗体属性
		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,WindowListener{
	public void paint(Graphics g) {
		super.paint(g);
	}

	//键被按下
	public void keyPressed(KeyEvent e) {
		System.out.println(e.getKeyChar()+"键被按下了");//e.getKeyCode()是ASCII码
	}

	//键被释放
	public void keyReleased(KeyEvent e) {

	}

	//键的一个值被打印输出(上下左右键等不会执行,因为没打印出)
	public void keyTyped(KeyEvent e) {

	}

	//窗口激活了(窗口还原后即激活)
	public void windowActivated(WindowEvent e) {
		System.out.println("窗口激活了");
	}

	//窗口关闭
	public void windowClosed(WindowEvent e) {//很少用到
		System.out.println("窗口关闭");
	}

	//窗口正在关闭
	public void windowClosing(WindowEvent e) {
		System.out.println("窗口正在关闭");
	}

	//窗口失去激活(窗口最小化)
	public void windowDeactivated(WindowEvent e) {
		System.out.println("窗口失去激活");
	}

	//窗口还原
	public void windowDeiconified(WindowEvent e) {
		System.out.println("窗口还原");
	}

	//窗口最小化
	public void windowIconified(WindowEvent e) {
		System.out.println("窗口最小化");
	}

	 //窗口打开
	public void windowOpened(WindowEvent e) {
		System.out.println("窗口打开");
	}
}

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

时间: 2024-10-08 21:26:52

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

《Javascript权威指南》学习笔记之十六:BOM之源---BOM基本应用

BOM的基本应用包括:管理浏览器历史.解析地址和获取浏览器信息,本文将介绍这些应用. 一.浏览历史管理 1.history对象的方法和属性 History 对象包含用户(在浏览器窗口中)访问过的 URL,是 window 对象的一部分,可通过 window.history 属性对其进行访问.没有应用于 History 对象的公开标准,不过所有浏览器都支持该对象. length属性:返回浏览器历史列表中的URl数量.是"前进"和"后退"两个按钮之下包含的地址数的总和.

Android学习笔记(十六)——碎片之间进行交互(附源码)

碎片之间进行交互 点击下载源码 很多时候,一个活动中包含一个或者多个碎片,它们彼此协作,向用户展示一个一致的UI.在这种情况下,碎片之间能进行通信并交换数据十分重要. 1.使用上一篇中创建的同一个项目,在fragment.xml中添加TextView的标识id: android:id="@+id/lblFragment1" 2.在fragment2.xml中添加一个Button,用于与fragment1进行交互: <Button android:id="@+id/btn

【Unity 3D】学习笔记四十六:输入与控制——键盘事件

在游戏中,玩家控制主角移动,按键攻击,选择行走.都需要在程序中监听玩家的输入.unity为开发者提供了input库,来支持键盘事件,鼠标事件以及触摸事件.本文主要回顾键盘事件,以后会逐文复习鼠标以及触摸事件. 键盘事件 一般的PC键盘有104个不同的按键,在程序中通过监听这些按键事件,从而进一步执行逻辑操作.如:射击游戏中,W表示前进,S表示后退,A表示左移,D表示右移. 按下事件 在脚本中,用input.GetKeyDown( )方法将按键值作为参数,监听此按键是否被按下.按下返回true,否

iOS学习笔记(十六)——数据库操作(使用FMDB)

iOS中原生的SQLite API在使用上相当不友好,在使用时,非常不便.于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入如下文件,并使用 libsqlite3.dylib 依赖包. FMDB同时兼容ARC和非ARC工

Android学习笔记(十六)——数据库操作(上)

//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! Android 为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类, 借助这个类我们可以方便地对数据库进行创建和升级.首先,由于SQLiteOpenHelpe是一个抽象类,所以我们需要创建一个类来继承它.SQLiteOpenHelper 中有两个抽象方法,分别是onCreate()和 onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现

《SAS编程与数据挖掘商业案例》学习笔记之十六

<SAS编程与数据挖掘商业案例>学习笔记,本次重点:sas宏变量 内容包含:宏变量.宏函数.宏參数.通配函数.字符函数.计算函数.引用函数.宏语句.宏应用 1.宏触发器: %name-token:是一个宏语句或宏函数 &name-token:是一个宏变量引用 宏变量不依赖于sas数据集,能够在不论什么一个除数据行以外的地方定义和引用宏变量,一般定义的宏变量为局部变量,除非使用%global,定义宏变量用%let,显示宏变量用%put,调用宏变量用&. eg: %let a=xx

Dynamic CRM 2013学习笔记(十六)用JS控制Tab可见,可用

一个Form里经常会有好几个Tab,有时要根据一些条件设置哪些Tab可用,可见.下面就介绍下如何用JS对Tab进行控制. 1. 控制可见 function setTabVisableByName(tabName, flag) { var control = Xrm.Page.ui.tabs.get(tabName); control.setVisible(flag); } 这里flag是true或false 2. 控制可用 看了上面的可见代码,是不是以为可用也这么简单呢?其实我们把上面的setV

PHP学习笔记三十六【try 二】

<?php //定义一个顶级异常处理器 要定义在最上面 function my_exception($e) { echo "我是顶级异常处理:".$e->getMessage(); } //修改默认顶级异常处理函数 set_exception_handler("my_exception"); function a1($val) { if($val>100) { throw new Exception("val>100");

linux学习笔记-第十六课-日常管理(三)

一.任务计划 1 )任务计划分为两类: 一类是一次性任务计划,由at控制的 另一类是例行周期性计划,由cron控制的 2 )at 一次性任务计划 选项与参数:    -m  :当 at 的工作完成后,即使没有输出信息,亦以 email 通知使用者该工作已完成.    -l  :at -l 相当於 atq,列出目前系统上面的所有该使用者的 at 排程:    -d  :at -d 相当於 atrm ,可以取消一个在 at 排程中的工作:    -v  :可以使用较明显的时间格式列出 at 排程中的

Linux学习笔记(十六)lvm、磁盘故障小案例

一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适于仅有一.两块硬盘的小系统. 小系统使用LVM的益处: 传统的文件系统是基于分区的,一个文件系统对应一个分区.这种方式比较直观,但不易改变: 1.不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用: 2.当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统