- Java code
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); }}
首先解释下,程序的目的是想要在图形化的用户界面中实现加法,具体是定义三个文本框,点击等号,第三个文本框就是第一个和第二个文本框中的数字之和.问题是这样的,界面呢能够出来,一,二个文本框也能输入数字,就是点击等号时没有结果,出现一堆错误的提示,我想我等号按钮的事件处理都已经设置好了,监听器也添加到按钮上了,看了好几遍实在找不出问题所在,不知道是不是粗心哪里写错了,当局者迷,还望旁观者指点迷津.大家可以运行下试试.
------解决方案--------------------
楼主在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);