监听器
,谁来处理这个事件?在Java中对此感兴趣的对象会处理它。对此感兴趣的对象称之为监听器(Listener)。
举例来说当我们点击一个按钮,想要按钮执行一些动作,需要一个对象来监控按钮,当点击按钮的事件发生时,该对象就会监听到按钮事件。进而可以执行一些动作。
例如:
Java中,对象表示的每个事件都是由java.util中EventObject类的子类,
: MouseEvent: 表示鼠标的动作,例如移动光标,单击,双击
KeyEvent: 表示键盘上的按键.
ActionEvent表示用户采取的用户界面操作 ,例如点击屏幕上的按钮 .
案例1:鼠标事件监听器
效果如下图:
代码如下:
package com.cn.gui.event;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import com.cn.gui.util.FrameUtil;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年8月14日09:17:02
* Desc:
鼠标事件监听器
*/
public class Demo2 {
public static void main(String[] args) {
JFrame frame = new JFrame("鼠标事件监听器");
JButton button = new JButton("按钮");
frame.add(button);
//给按钮添加鼠标事件监听器
/*button.addMouseListener(new MouseListener() {
//添加鼠标监听器的时候我们只使用到单击事件,但是目前要实现所有的方法?
//解决方案:适配器。适配器是实现了MouseListener方法的所有方法,但是实现的方法全部都是空实现。
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("鼠标松开。。。");
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("鼠标按下。。。");
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("鼠标移出。。。");
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("鼠标进入。。。");
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("鼠标单击。。。"); //单击(按下,再放开)
}
});*/
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("单击了。");
if(e.getClickCount() == 2){ //双击
System.out.println("双击了。。");
}
}
});
FrameUtil.initFrame(frame, 300, 300);
}
}
案例2:键盘事件监听器
效果如下图:
代码如下:
package com.cn.gui.event;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import com.cn.gui.util.FrameUtil;
/**
* Author:Liu Zhiyong
* Version:Version_1
* Date:2016年8月14日09:36:04
* Desc:
键盘事件监听器
*/
public class Demo3 {
public static void main(String[] args) {
JFrame frame = new JFrame("键盘事件监听器");
JButton button = new JButton("按钮");
frame.add(button);
//给按钮添加键盘事件监听器
/*button.addKeyListener(new KeyListener(){
//添加键盘事件监听器的时候我们只使用到单击事件,但是目前要实现所有的方法?
//解决方案:适配器。适配器是实现了KeyListener方法的所有方法,但是实现的方法全部都是空实现。
@Override
public void keyTyped(KeyEvent e) {
System.out.println("键入某个键时调用此方法。" + e.getKeyChar());
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("按下某个键时调用此方法。" + e.getKeyChar());
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("释放某个键时调用此方法。" + e.getKeyChar());
}
});*/
button.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println("按下某个键。。。" + e.getKeyChar() + "#" + e.getKeyCode());
int code = e.getKeyCode();
switch(code){
case 37:
System.out.println("左");
break;
case 38:
System.out.println("上");
break;
case 39:
System.out.println("右");
break;
case 40:
System.out.println("下");
break;
}
}
});
FrameUtil.initFrame(frame, 300, 300);
}
}