У меня есть класс свинга, который включает в себя переменную Str3 String, объявленную как окончательные и дваКак изменить значение переменной во внешнем классе, когда оно изменилось во внутреннем?
ActionListener интерфейсов, которые реализованы два JButtons b1
и b2, когда b1 JButton нажат str3 Строки принимает значение,
Мой вопрос здесь, как изменить значение str3 по всему классу
скорее во втором интерфейсе ActionListener (не только в первом внутреннем классе).
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
public class mySwing extends JFrame {
JButton b1, b2;
public mySwing() {
final String str3;
JPanel panel = new JPanel();
b1 = new JButton("please click me first");
b2 = new JButton("please click me second");
final JTextField txt = new JTextField(" ");
panel.add(txt);
Container pane = getContentPane();
panel.add(b1);
panel.add(b2);
pane.add(panel);
str3 = new String();
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent acv) {
String input = "HelloWorld";
String str3 = new String(input.substring(0, 5));
txt.setText(str3);
}
});
b2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent acv) {
txt.setText(str3);
}
});
setVisible(true);
}
public static void main(String[] args) {
new mySwing();
}
}
Нет, он должен быть окончательным для доступа из внутреннего класса. – JavaFan
Он должен быть окончательным, только если это локальная переменная. При создании переменной экземпляра он может быть доступен внутренними классами, не будучи окончательным. Просто попробуйте. Или посмотрите на свои кнопки 'b1' и' b2'. Они могут быть доступны вашими внутренними классами, не будучи окончательными. – Holger
Пожалуйста, объясните больше объяснений. Я не понимаю вашу идею. – JavaFan