import java.awt.*;
import java.awt.event.*;public class TestTextField
{
public static TextField tf1, tf2, tf3;  //静态的三个文本框类型的变量,
//这里必须是静态的以便另外一个类能访问

public static void main(String[] args)
{
TextField tf1 = new TextField(30); //30表示文本框的长度;
TextField tf2 = new TextField(30);
TextField tf3 = new TextField(30);
Button bn = new Button("=");
Label lb = new Label("+");
Frame f = new Frame("文本框相加示例");
f.setLayout(new FlowLayout());  //设置容器为流式布局
f.add(tf1);
f.add(lb);
f.add(tf2);
f.add(bn);
f.add(tf3);

bn.addActionListener(new MyMonitor());  //将等号按钮添加一个监视器
f.addWindowListener(new B());  //给容器f添加一个监视器,用来关闭window窗口

f.pack();
f.setVisible(true);
}
}class MyMonitor implements ActionListener
{
@Override  //这里的作用可以增加程序的安全性,保证了下面的方法是调用重写的而不是父类的
public void actionPerformed(ActionEvent e)
{
String str1 = TestTextField.tf1.getText();
String str2 = TestTextField.tf2.getText();  //两个文本框接受两个数 int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);  //将文本框接收的数据转化为整型的
int num3 = num1 + num2;

Integer it = new Integer(num3);
String str3 = it.toString();  //将结果转化为String类型的输出

TestTextField.tf3.setText(str3);
}
}class B extends WindowAdapter  //设置window窗口关闭按钮事件
{
public void windowClosing(WindowEvent e)
{
System.exit(-1);
}
}
首先解释下,程序的目的是想要在图形化的用户界面中实现加法,具体是定义三个文本框,点击等号,第三个文本框就是第一个和第二个文本框中的数字之和.问题是这样的,界面呢能够出来,一,二个文本框也能输入数字,就是点击等号时没有结果,出现一堆错误的提示,我想我等号按钮的事件处理都已经设置好了,监听器也添加到按钮上了,看了好几遍实在找不出问题所在,不知道是不是粗心哪里写错了,当局者迷,还望旁观者指点迷津.大家可以运行下试试.

解决方案 »

  1.   

    楼主在TestTextField里定义了三个变量,(这是三个类变量)。
       public static TextField tf1, tf2, tf3;  //静态的三个文本框类型的变量.而main()里的语句,也定义了三个变量。
           TextField tf1 = new TextField(30); //30表示文本框的长度;
            TextField tf2 = new TextField(30);
            TextField tf3 = new TextField(30);
     这三个变量是局部变量,和上面的三个变量不一样。 下边三个变量出了main ()就失效了。建议楼主:
    把main()里的语句改成:
    TestTextField.tf1 = new TextField(30); //30表示文本框的长度
    TestTextField.tf2 = new TextField(30);
    TestTextField.tf3 = new TextField(30);
      

  2.   

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at MyMonitor.actionPerformed(TestTextField.java:42)
    这句出错提示,告诉你在执行下面的语句时出现了空指针异常。tf1,tf2,tf3都是null.
            String str1 = TestTextField.tf1.getText();
      

  3.   

    soga,本来是没有定义静态的类变量,是按照main方法里的方式,结果不能实现,后来定义后忘删掉了,我说怎么老是看不出来,还真是旁观者清啊~ ~。