事件:程序对某些操作的响应
例子:点击按钮,打印“Hello”
Step1:事件响应类必须能够听到相应的命令
点击按钮如果要响应,必须让响应类实现java.awt.event.ActionListener 接口
Step2:将事件响应的代码,放在接口中重写的函数内
Step3:绑定,确保按钮发出命令,响应对象能够执行
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Printer implements ActionListener{
//①实现接口
public void actionPerformed(ActionEvent e){
//②事件响应代码
System.out.println("Hello");
}
}
class EventTest1 extends JFrame{
private JButton jbt = new JButton("按钮");
public EventTest1(){
Printer p = new Printer();
jbt.addActionListener(p); //③绑定,确保按钮发出命令,p能够执行
this.add(jbt,BorderLayout.NORTH);
this.setSize(300,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new EventTest1();
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class EventTest2 extends JFrame implements ActionListener{
private JButton jbt = new JButton("按钮");
public EventTest2(){
jbt.addActionListener(this);
this.add(jbt,BorderLayout.NORTH);
this.setSize(300,400);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
System.out.println("Hello");
}
public static void main(String[] args) {
new EventTest2();
}
}
actionPerformed:我们可以看到第一段代码额外构建了一个函数Printer(),而第二个代码则运用用到了actionPerformed()
思考问题
问题1:点击按钮,需要响应类实现ActionListener,这是谁规定的?
答:Java中定义,不同的事件,由不同的XXXListener来监听。
问题2:列出什么样的事件,由什么样的Listener监听?
答案:后面再讲
问题3:事件响应函数中,ActionEvent参数是什么?
答案:表示命令发出时,封装的命令发出方的信息。
例:两个按钮,一个按钮点击,界面变红,另一个点击,界面变蓝
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class EventTest3 extends JFrame implements ActionListener{
private JButton jbt1 = new JButton("变红");
private JButton jbt2 = new JButton("变蓝");
private JPanel jpl = new JPanel();
public EventTest3(){
this.add(jbt1,BorderLayout