У вас есть две разные переменные JTextField с именами jtf
.
Первая - это переменная экземпляра, которую вы объявили с помощью JTextField jtf = new JTextField();
и которая доступна из любого места в классе.
Вторая - это локальная переменная, которую вы объявили с помощью JTextField jtf = new JTextField("This is the text field");
, и она доступна только в конструкторе Calculator
.
Проблема в том, что вторая jtf
(локальнаяпеременная) добавляется в пользовательский интерфейс, в то время как первая jtf
(переменная экземпляра) - это то, что обновляется событием действия.
Чтобы исправить это, измените это (в верхней части класса):JTextField jtf = new JTextField();
на это: JTextField jtf;
И затем измените это (в конструкторе):
JTextField jtf = new JTextField("This is the text field");
на это: jtf = new JTextField("This is the text field");
Тогда у вас будет только одна переменная jtf
(которая будет переменной экземпляра), и ваше действие должно работать.