希望结果显示在表单上

时间:2018-11-25 16:37:06

标签: java swing

我希望结果显示在表单上。

为什么此代码不起作用?

package Swing1_1;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Swing2 {
       public static void main(String args[])
        {
           Addition obj=new Addition();
            obj.setVisible(true);
       }
    }
     class Addition extends JFrame implements ActionListener 
    {
        JTextField t1,t2;
        JLabel lbl;
        JButton b1;
       public Addition()
       {
            JTextField t1=new JTextField(20);
            JTextField t2=new JTextField(20);
            JLabel lbl=new JLabel("Result");
            JButton b1=new JButton("OKey");
             add(t1);
           add(t2);
            add(b1);
            add(lbl);
            setLayout(new FlowLayout());
             //setVisible(true);
           setSize(400,400);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          b1.addActionListener(this);// 
         }

     public void actionPerformed( ActionEvent ae) 
           {
              int num1,num2,value;
               num1=Integer.parseInt("12");
               num2=Integer.parseInt("20");

            value=num1+num2;
              //System.out.println(value +"");
            lbl.setText(value +"");
        }
     }

1 个答案:

答案 0 :(得分:1)

实现的问题是,您在lbl类中将instance [1]变量声明为Addition变量,并在constructor中再次声明了新变量{{ 1}} [2](与lbl变量同名并实例化。在local方法中,您重置了actionPerformed变量的值,但是在这里它试图重置lbl [1]的值。因此它引发了异常,因为我们无法在不实例化的情况下将值重置为引用类型变量。因此,代码应遵循此规则;

lbl