import java.awt.*;
import java.awt.event.*;
public class ActionEvent_2 extends Frame implements ActionListener{
Panel p; //创建面板和按钮
Button br,bl,bg;
ActionEvent_2() {
super("ActionEvent 本类中实现测试");
p = new Panel();
//创建三个事件源
br = new Button("红色");
bg = new Button("绿色");
bl = new Button("蓝色");
p.add(br);//添加按钮到面板
p.add(bg);
p.add(bl);
add(p, "North");//添加面板到框架
//注册事件侦听器:同一个对象
br.addActionListener(this);
bg.addActionListener(this);
bl.addActionListener(this);
//使用内部匿名类关闭窗口
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
});
//设置窗口大小和可视性
setSize(300,200);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {//实现接口方法
String btnLabel=e.getActionCommand();
if (btnLabel.equals("红色")){
setBackground(Color.RED);
}else if (btnLabel.equals("绿色")){
setBackground(Color.GREEN);
}else if (btnLabel.equals("蓝色")){
setBackground(Color.BLUE);
}
}
public static void main(String argc[]) {
new ActionEvent_2();//调用构造方法
}
}
这是一个简单的界面设计,然后在
//注册事件侦听器:同一个对象
br.addActionListener(this);
bg.addActionListener(this);
bl.addActionListener(this);
这段的this指的是什么?关于this的用法有点模糊
------解决方案--------------------
this代表当前类的实例,当前类也就是ActionEvent_2,它实现了ActionListener接口所以可以作为事件监听器,当事件发生时自动调用actionPerformed方法(这个方法是在ActionListener中定义的,本类实现的)