我希望结果显示在表单上。
为什么此代码不起作用?
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 +"");
}
}
答案 0 :(得分:1)
实现的问题是,您在lbl
类中将instance
[1]变量声明为Addition
变量,并在constructor
中再次声明了新变量{{ 1}} [2](与lbl
变量同名并实例化。在local
方法中,您重置了actionPerformed
变量的值,但是在这里它试图重置lbl
[1]的值。因此它引发了异常,因为我们无法在不实例化的情况下将值重置为引用类型变量。因此,代码应遵循此规则;
lbl