/*第一种:将事件的处理委托给其他对象,下面的例子是委托给了MyListener(implements ActionListener)*/
import java.applet.Applet;
public class ChangeColor extends Applet{//Applet的默认布局为FlowLayout方式
myLabel=new Label("显示状态!");
panBtn.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));//设置面板的对齐方式
panBtn.setPreferredSize(new Dimension(100,90));
panBtn.setBackground(Color.yellow);
btn.addActionListener(new myListener(this));//为Button添加监听器,通过传递一个ChangeColor的引用来构造自己的监听器
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));//设置Applet的对齐方式
/*panBtn.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));//设置面板的对齐方式
panBtn.setPreferredSize(new Dimension(100,90));
panBtn.setBackground(Color.yellow);
btn.addActionListener(new myListener(this));
setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));//设置Applet的对齐方式
//一般常在start()中启动动画或播放声音等的线程, 所以上面的/**/内容最好还是放在init()方法中
public void addItem(String text){
System.out.println(text);
public void paint(Graphics g){
g.setFont(new Font("华文彩云", Font.BOLD, 20));
g.drawString(str, 100, 200);
class myListener implements ActionListener{
public myListener(ChangeColor x){//在这里我们想要调用其他类中的变量
public void actionPerformed(ActionEvent e){
if(xy.myColor==Color.black)
/*第二种:将事件的处理委托给自身对象(自身对象实现了相应的监听器接口)*/
import java.applet.Applet;
public class ChangeColor2 extends Applet implements ActionListener{
myColor=Color.black;//初始化文本字体颜色
btn.addActionListener(this);//将事件的处理委托给自身
pan.setPreferredSize(new Dimension(100, 90));
pan.setBackground(Color.blue);
pan.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));
myLabel = new Label("显示状态");
public void paint(Graphics g){
g.setFont(new Font("华文行楷", Font.BOLD, 30));
g.drawString(str, 100, 200);
public void actionPerformed(ActionEvent e){
if(myColor==Color.black){
public void addItem(String tmp){