鼠标事件监听机制的三个方面:
1.事件源对象:
事件源对象就是能够产生动作的对象。在Java语言中所有的容器组件和元素组件都是事件监听中的事件源对象。Java中根据事件的动作来区分不同的事件源对象,动作发生在哪个组件上,那么该组件就是事件源对象
2.事件监听方法:
addMouseListener(MouseListener ml) ;该方法主要用来捕获鼠标的释放,按下,点击,进入和离开的动作;捕获到相应的动作后,交由事件处理类(实现MouseListener接口)进行处理。
addActionListener(ActionListener al);捕获类似按钮组件上的鼠标点击动作或者是类似输入框组件上的键盘回车动作;然后将动作以及相关信息交由事件处理类(实现ActionListener接口)的相应方法进行处理。
addMouseMotionListener(MouseMotionListener mml);捕获鼠标的移动和拖动动作;然后将动作以及相关信息交由事件处理类(实现MouseMotionListener 接口)的相应方法进行处理。
addKeyListener(KeyListener kl);捕获事件源对象上的键盘按键的按下、释放和敲击动作;然后将动作以及相关信息交由事件处理类(实现KeyListener 接口)的相应方法进行处理。
3.事件接口(事件处理类,也即实现了事件接口的类):
MouseListener 鼠标事件接口,有按下,释放,点击,进入和离开的事件处理方法
ActionListener 动作事件接口,有动作对应的事件处理方法
MouseMotionListener 鼠标移动事件接口,有移动和拖动的事件处理方法
KeyLisetener 键盘事件接口,有释放,按下和敲击的事件处理方法
了解了事件监听的这三个方面之后,我们要对组件添加事件的监听就很容易了。下面是一个小例子:
目标:创建一个简易的绘图板,可以实现按下相应的功能来达到不同的绘画目的。
分析: 1.首选需要一个画图板的简易界面,定义一个Draw类使用Java的Swing组件进行界面的初始化。
2.然后定义事件接口DrawListener类,让它实现以上的接口,重写接口中的方法,达到自己的目的。
3.在Draw中实例化DrawListener类的对象。
4.为Draw类中的组件添加事件监听方法,指定事件处理类为DrawListener。
代码实现:
Draw类
package com.cbs;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
* Draw类,用于界面的初始化
*
* @author CBS
*
*/
public class Draw {
public static void main(String[] args) {
Draw t = new Draw();
t.showUI();
}
// 界面初始化方法
public void showUI() {
JFrame jf = new JFrame();
jf.setTitle("画图");
jf.setSize(700, 700);
jf.setDefaultCloseOperation(3);
jf.setLocationRelativeTo(null);
FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
jf.setLayout(layout);
JButton drawLine = new JButton("画直线");
jf.add(drawLine);
JButton drawOval = new JButton("画椭圆");
jf.add(drawOval);
JButton drawArc = new JButton("画曲线");
jf.add(drawArc);
JButton drawPolygon = new JButton("三角形");
jf.add(drawPolygon);
JButton jb1 = new JButton();
jb1.setBackground(Color.RED);
jf.add(jb1);
jb1.setPreferredSize(new Dimension(30, 30));
JButton jb2 = new JButton();
jb2.setBackground(Color.GREEN);
jf.add(jb2);
jb2.setPreferredSize(new Dimension(30, 30));
jf.setVisible(true);
Graphics g = jf.getGraphics();// 获取当前的画笔
DrawListener dl = new DrawListener(g);// 实例化DrawListener类的对象
jf.addMouseListener(dl);// 为窗体添加鼠标事件监听方法
jf.addMouseMotionListener(dl);// 为窗体添加鼠标移动事件监听方法