java中关于addActionListener的问题

先看一段代码 import java.awt.*;
import java.awt.event.*;

public class CH13_01 implements ActionListener
{
Frame frmFrame;
Button btnUp, btnDown;

public CH13_01()
{

frmFrame = new Frame("按钮应用");

frmFrame.setLayout(new GridLayout(2,1));

//产生按钮一
btnUp = new Button("上");
btnUp.setActionCommand("btnUp");
btnUp.addActionListener(this);

//产生按钮二
btnDown = new Button("下");
btnDown.setActionCommand("btnDown");
btnDown.addActionListener(this);

frmFrame.add(btnUp);
frmFrame.add(btnDown);

frmFrame.pack();

frmFrame.setVisible(true);
}

public void actionPerformed(ActionEvent e)
{
String cmd = e.getActionCommand();

if ( cmd.equals("btnDown") )
{
if (btnUp.getBackground()==Color.BLUE)
{
btnUp.setBackground(Color.red);
}
else
{
btnUp.setBackground(Color.blue);
}
}
else
{
if (btnDown.getBackground()==Color.BLUE)
{
btnDown.setBackground(Color.red);
}
else
{
btnDown.setBackground(Color.blue);
}
}
}

public static void main(String[] args)
{
new CH13_01();
} }
我想问的是在产生按钮的代码段中 btnUp.addActionListener(this);中的this指的是什么?我尝试去理解,将这个this分别换成btnUp,CH13_01,frmFrame都发生编译错误,不能理解,希望高手指教.
不幸运得是我没理解1楼的回答,在这个代码里,这个this所指代的行为是不是唯一?倘若同时出现了方法或者成员或者操纵火灾的类,它应该如何选择指代?或者直接报错?我想以一种不用专业术语来解释而是靠理解去赋予自己的概念去理解这个this的作用,不过关于1楼的代码还是让我有点反映,3Q

这里的this 指的是你的方法或成员或操作火灾的这个类,this在这里的作用是说明,你必须在该类里面来实现ActionListener里面的actionPerformed方法,其实btnUp.addActionListener(Object t);这里的参数的意思是,这个t是哪个类的对象,那么那个类就负责来实现接口的方法,不知道你理解了没有。
import java.awt.*;
import java.awt.event.*;

public class Bnbn //implements ActionListener
{
Frame frmFrame;
Button btnUp, btnDown;
public Bnbn()
{

frmFrame = new Frame("按钮应用");
frmFrame.setLayout(new GridLayout(2,1));
ss s=new ss();//产生内部类对象作监视器
//产生按钮一
btnUp = new Button("上");
btnUp.setActionCommand("btnUp");
btnUp.addActionListener(s);
//产生按钮二
btnDown = new Button("下");
btnDown.setActionCommand("btnDown");
btnDown.addActionListener(s);
frmFrame.add(btnUp);
frmFrame.add(btnDown);
frmFrame.pack();
frmFrame.setVisible(true);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
class ss implements ActionListener //创建内部类作监视器
{

public void actionPerformed(ActionEvent e)
{
String cmd = e.getActionCommand();

if ( cmd.equals("btnDown") )
{
if (btnUp.getBackground()==Color.BLUE)
{
btnUp.setBackground(Color.red);
}
else
{
btnUp.setBackground(Color.blue);
}
}
else
{
if (btnDown.getBackground()==Color.BLUE)
{
btnDown.setBackground(Color.red);
}
else
{
btnDown.setBackground(Color.blue);
}
}
}
}

public static void main(String[] args)
{
new Bnbn();
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜