java事件监听器分为三部分:事件,事件源,监听器。
当事件源发生某个动作的时候,它会调用事件监听器的方法,并在调用事件监听器方法的时候把事件对象传递进去。
事件类
接口:
package event.events;
import java.util.EventObject;
public interface EventInfo{
public String getDoType() ;
}
监听器
接口
package event.eventListener;
import event.events.EventInfo;
import java.util.EventListener;
public interface EventListenerInfo extends EventListener {
public default void handler(EventInfo eventInfo){
System.out.println(eventInfo.toString());
}
}
鼠标
所有组件都能发出鼠标事件,MouseEvent类负责捕获鼠标事件,可以通过为组件添加实现了MouseListener接口的监听器类来处理相应的鼠标事件。
在每个事件触发后都会产生MouseEvent事件,此事件可以得到鼠标的相关操作
MouseListener接口共有5个抽象方法,分别在光标移入或移出组件时、鼠标按键被按下或释放时和发生单击事件时被触发。所谓单击事件,就是按键被按下并释放。
此接口定义了:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
public class t3 extends JFrame{
private static final long serialVersionUID = 1L;
public t3() {
setTitle("Hern");
setBounds(400, 400, 400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JLabel label = new JLabel();
label.setText("请用鼠标点击");
label.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {//鼠标按键被释放时被触发
// TODO Auto-generated method stub
System.out.println("鼠标按键被释放,");
int i = e.getButton(); //通过该值可以判断释放的是哪个键
if (i == MouseEvent.BUTTON1) {
System.out.print("释放了鼠标左键");
}else if(i == MouseEvent.BUTTON2) {
System.out.println("释放了鼠标滚轮");
}else if(i == MouseEvent.BUTTON3){
System.out.println("释放了鼠标右键");
}
}
@Override
public void mousePressed(MouseEvent e) {//鼠标按键被按下时被触发
// TODO Auto-generated method stub
System.out.print("鼠标按键被按下,");
int i = e.getButton(); // 通过该值可以判断按下的是哪个键
if(i == MouseEvent.BUTTON1) {
System.out.print("按下了鼠标左键");
}else if(i == MouseEvent.BUTTON2) {
System.out.print("按下了鼠标滚轮");
}else if(i == MouseEvent.BUTTON3) {
System.out.print("按下了鼠标右键");
}
}
@Override
public void mouseExited(MouseEvent e) {//光标移出组件时被触发
// TODO Auto-generated method stub
System.out.println("光标移除组件");
}
@Override
public void mouseEntered(MouseEvent e) {//光标移入组件时被触发
// TODO Auto-generated method stub
System.out.println("光标移入组件");
}
@Override
public void mouseClicked(MouseEvent e) {//发生单击事件时被触发
// TODO Auto-generated method stub
System.out.print("单击了鼠标按键,");
int i = e.getButton(); // 通过该值可以判断单击的是哪个键
if (i == MouseEvent.BUTTON1) {
System.out.print("单击的是鼠标左键,");
}else if (i == MouseEvent.BUTTON2) {
System.out.print("单击的是鼠标滚轮,");
}else if (i == MouseEvent.BUTTON3) {
System.out.print("单击的是鼠标右键,");
}
int clickCount = e.getClickCount();//获取单击按键的次数
System.out.println("单击次数为" + clickCount + "下");
}
});
add(label);
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
t3 test = new t3();
}
}
键盘
KcyListcner接口对键盘的操作进行监听
如果想要取得键盘键入的内容,可以通过keyEvent取得