日期:2014-05-20  浏览次数:20801 次

简单的图形界面的监听接口问题
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不太好,