当前位置: 代码迷 >> J2SE >> 学习java图形化编程遇到个不知名的有关问题,看了好几遍都没看出来,求解答
  详细解决方案

学习java图形化编程遇到个不知名的有关问题,看了好几遍都没看出来,求解答

热度:229   发布时间:2016-04-24 01:31:51.0
学习java图形化编程遇到个不知名的问题,看了好几遍都没看出来,求解答!
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);
  相关解决方案