简单的图形界面的监听接口问题
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个类是可以解决这个问题的,但是那本教材的所有程序都是分开来写的,请指教一下问题在哪,或者怎样修改,谢谢。
------解决方案--------------------传递参数,如下:
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); //参数
}
}
------解决方案--------------------1楼的好像也通不过编译啊
------解决方案--------------------把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);
------解决方案--------------------不错的程序,适合新手~我收下了~
------解决方案--------------------我觉得无谓的把参数设置成static不太好,