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);
}
}
首先解释下,程序的目的是想要在图形化的用户界面中实现加法,具体是定义三个文本框,点击等号,第三个文本框就是第一个和第二个文本框中的数字之和.问题是这样的,界面呢能够出来,一,二个文本框也能输入数字,就是点击等号时没有结果,出现一堆错误的提示,我想我等号按钮的事件处理都已经设置好了,监听器也添加到按钮上了,看了好几遍实在找不出问题所在,不知道是不是粗心哪里写错了,当局者迷,还望旁观者指点迷津.大家可以运行下试试.
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);
at MyMonitor.actionPerformed(TestTextField.java:42)
这句出错提示,告诉你在执行下面的语句时出现了空指针异常。tf1,tf2,tf3都是null.
String str1 = TestTextField.tf1.getText();