import java.awt.*;
import java.awt.event.*;
public class Test
{
public static void main (String[] args) 
{
new AppFrame();
    }
}
class AppFrame extends Frame
{
TextField in=new TextField(10);
Button btn=new Button("求平方");
Label out =new Label("用于显示结果");
AppFrame()
{
setLayout(new FlowLayout());
add(in);
add(btn);
add(out);
btn.addActionListener(new BtnActionAdapter());
setSize(400,100);
setVisible(true);
}
}
class BtnActionAdapter implements ActionListener
{ public void actionPerformed(ActionEvent e)
{
String s=in.getText();
double d=Double.parseDouble(s);
double sq=d*d;
out.setText(d+"的平方是:"+sq);
}
}以上程序是一本清华大学出版社的教材,程序把按钮的监听接口单独写成了一个类,但是我在编译的时候要报错,找不到in和out标识符,我知道把2个类合成1个类是可以解决这个问题的,但是那本教材的所有程序都是分开来写的,请指教一下问题在哪,或者怎样修改,谢谢。

解决方案 »

  1.   

    传递参数,如下:import java.awt.*; 
    import java.awt.event.*; 
    public class Test 

    public static void main (String[] args)  

    new AppFrame(); 
        } 

    class AppFrame extends Frame 

    TextField in=new TextField(10); 
    Button btn=new Button("求平方"); 
    Label out =new Label("用于显示结果"); 
    AppFrame() 

    setLayout(new FlowLayout()); 
    add(in); 
    add(btn); 
    add(out); 
    btn.addActionListener(new BtnActionAdapter(this)); //this参数
    setSize(400,100); 
    setVisible(true); 


    class BtnActionAdapter implements ActionListener 

    AppFrame frame;
    public BtnActionAdapter(AppFrame frame){
    this.frame=frame;
    }public void actionPerformed(ActionEvent e) 

    String s=frame.in.getText(); //参数
    double d=Double.parseDouble(s); 
    double sq=d*d; 
    frame.out.setText(d+"的平方是:"+sq); //参数

      

  2.   

    把AppFrame里的in和out变为static型!如下:
    static TextField in=new TextField(10); 
    static Label out =new Label("用于显示结果");
    在 BtnActionAdapter 里调用时加上类限定,如下:
    String s=AppFrame.in.getText(); 
    AppFrame.out.setText(d+"的平方是:"+sq); 
      

  3.   


    Catch
      

  4.   

    Case
      

  5.   

    import java.awt.*; 
    import java.awt.event.*; 
    public class Test 

    public static void main (String[] args)  

    new AppFrame(); 
        } 

    class AppFrame extends Frame 

    TextField in=new TextField(10); 
    Button btn=new Button("求平方"); 
    Label out =new Label("用于显示结果"); 
    AppFrame() 

    setLayout(new FlowLayout()); 
    add(in); 
    add(btn); 
    add(out); 
    btn.addActionListener(new BtnActionAdapter()); 
    setSize(400,100); 
    setVisible(true); 


    class BtnActionAdapter implements ActionListener 
    { public void actionPerformed(ActionEvent e) 

    String s=in.getText(); 
    double d=Double.parseDouble(s); 
    double sq=d*d; 
    out.setText(d+"的平方是:"+sq); 


      

  6.   

    我觉得无谓的把参数设置成static不太好,
      

  7.   

    应该说如果两个类是在同一个包下的话,AppFrame 类中的IN OUT参数是可以在BtnActionAdapter 类中访问的,不过象教材中那样是不可以的,我知道是有个方法的,或者象1楼的那样通过对象去访问,那是可以的,除非两个类不在同一个包下。