倒数低2行:setBackground(bgColor);
这个方法怎么不是"点"出来的 就直接能用呢?import java.awt.*;
import java.awt.event.*;
public class MyButton {
  public static void main(String[]args){
    MyButtonFrame frm=new MyButtonFrame();
    frm.show();
  }
}
class MyButtonFrame extends Frame{
  public MyButtonFrame(){
    setTitle("测试");
    setSize(300,200);
    MyButtonPanel Panel=new MyButtonPanel();
    add(Panel);
  }
}
class MyButtonPanel extends Panel{
  public MyButtonPanel(){
    Button bButton=new Button("蓝");
    add(bButton);
    MyListenerAction bAction=new MyListenerAction(Color.blue);
    bButton.addActionListener(bAction);
  }
  private class MyListenerAction implements ActionListener{
    private Color bgColor;
    public MyListenerAction(Color c){
      bgColor=c;
    }
  public void actionPerformed(ActionEvent event){
    setBackground(bgColor);
    repaint();
  }
  }
}

解决方案 »

  1.   

    原因是:class MyButtonPanel extends Panel{...}
      

  2.   

    你想加.也可以,改成this.setBackground(bgColor); //慢慢思考吧
      

  3.   

    Panel 点进去自然就有 setBackground方法.
      

  4.   

    因为MyListenerAction 是MyButtonPanel的内部类,自动保存其outer class的引用,所以MyListenerAction 可以调用MyButtonPanel的setBackground(),即这里setBackground是MyButtonPanel的成员