事件模型相关概念
事件:描述发生了什么的对象。
存在各种不同类型的事件类用来描述各种类型的用户交互。
事件源:事件的产生器。
事件处理器:接收事件、解释事件并处理用户交互的方法。
几类具有典型代表意义的事件
MouseEvent,鼠标事件,鼠标按下、释放、点击等。
WindowEvent,窗口事件,点击关闭按钮,窗口得到与失去焦点,窗口最小化等。
ActionEvent,动作事件,不代表具体的动作,是一种语义。如按钮或菜单被鼠标单击,单行文本框中按下回车键等都可以看做是ActionEvent事件。
如果用户的一个动作导致了某个组件最基本的动作发生了,这就是ActionEvent事件。
对于每类事件,都会有一个接口(接口一般叫xxxListener),这个接口要求定义一个或多个方法。想接收这个事件的类必须实现这个接口,当发生这些事件时,就会调用这些方法。
以下为例子:
1)为button添加了也就是ActionEvent(编写MyButtonListener类)
2)为界面添加了鼠标事件MouseEvent
3)为界面添加了WindowEvent(编写MyWindowListener类)
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
/**
* 文件名:ListenerTest
* 创建者:xiebaoming
* 创建时间:2021/12/7 22:02
* 描述:TODO
*/
public class ListenerTest implements MouseListener {
private JFrame frame;
private Button button;
void go(){
frame = new JFrame();
//加一个按钮
button = new Button("ButtonListener");
button.setBounds(10,25,7,7);
button.addActionListener(new MyButtonListener()); //给界面的这个鼠标控件加上ActionEvent
frame.add(button,BorderLayout.WEST);
frame.setTitle("ListenerTest");
frame.setSize(800,500);
//给界面加上鼠标监听事件MouseEvent
frame.addMouseListener(this);
//给界面加上window监听事件WindowEvent
frame.addWindowListener(new MyWindowListener());
frame.setVisible(true);
}
public static void main(String[] args) {
ListenerTest listenerTest = new ListenerTest();
listenerTest.go();
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("界面已被点击");
System.out.println("坐标为:("+e.getX()+","+e.getY()+")");
//JOptionPane.showMessageDialog(this.frame,"界面已被点击");
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* 文件名:MyButtonListener
* 创建者:xiebaoming
* 创建时间:2021/12/7 22:32
* 描述:按钮事件类
*/
public class MyButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("按钮被点击");
}
}
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
/**
* 文件名:MyWindowListener
* 创建者:xiebaoming
* 创建时间:2021/12/7 22:45
* 描述:窗口事件类
*/
public class MyWindowListener implements WindowListener {
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("windowClosing");
// 退出
System.exit(0);
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
}
欢迎微信搜索个人公众号:楠哥毕设帮
提供个人二开项目源码、部署讲解、论文指导~