Проблема вашей реализации в том, что вы объявили переменную lbl
[1] как переменную instance
в классе Addition
, а в constructor
вы снова объявили новую переменную lbl
[2] (то же имя)как local
переменная и конкретизированная.В методе actionPerformed
вы сбрасываете значение переменной lbl
, но здесь она пытается сбросить значение lbl
[1].Поэтому это вызывает исключение, потому что мы не можем сбросить значение до переменной ссылочного типа без создания экземпляра.Таким образом, код должен следовать за этим;
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);
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 + "");
}
}