public class xFrame extends JFrame {
  protected JButton B1= null ;   //NO:1
  public xFrame(){
   JPanel P1=new JPanel();//NO:2
   B1=new JButton("New");   //放于此后。正常
   P1.add(B1);
   setBounds(100,100,100,100);
   setVisible(true);
   B1.addActionListener(this);
  }
  void actionPerformed(ActionEvent){
    if (e.getSource()==B1){
     B1.setText("Old");
    }
  }
  public static void main(String[] arg){
   xFrame F1=new xFrame();
  }
}定义的生存范围被你限定死了,这样就可以了

解决方案 »

  1.   

    我想可能是因为这样的:你的B1被设成protected,这样,当你把No.1的语句放在No.2后边的时候,也就是把B1的定义放在了xFrame()里边,于是B1的生存范围就在xFrame()之中了,这样在actionPerformed(ActionEvent)中找不到B1的定义,就会报错。另外:Java不像VC那样,报错出在那一行,就是那一行的问题。我想你的这个报错信息应该是B1没有定义吧。to orange2002:liujuntao的代码没有把import写进来,所以你无法编译
      

  2.   

    我加了import的,,,我还改了呢,可以编译就是运行出错,,,
    请你改改咯