Эта строка
String Meno = login.Meno;
заставляет меня думать, что у вас есть что-то вроде
class Login {
public String Meno;
}
с вашей рамкой, объявленной как
class MyFrame {
private Login login;
}
То, что вы хотите, это иметьваш Login
класс будет моделью вашего приложения, которое будет распространять изменения.Это означает, что у вас нет члена public
, но есть методы получения / установки.
class Login {
private String meno;
public void setMeno(String n) { this.meno = n; }
public String getMeno() { return meno; }
}
Если вы хотите отобразить это имя, вы можете сделать это:
JTextField field = new JTextField(login.getMeno());
Затем, поскольку имя может измениться, вам необходим механизм обновления компонентов графического интерфейса.Это можно сделать с помощью шаблона прослушивателя:
interface NameListener {
public void nameChanged(String newName);
}
class Login {
private String meno;
private Collection<NameListener> listeners = new ArrayList<>();
public void addListener(NameListener l) { listeners.add(l); }
public void setMeno(String n) {
meno = n;
for (NameListener l : listeners) { l.nameChanged(n); }
}
}
Чтобы включить обновления в текстовом поле, вы можете выполнить
JTextField field = new JTextField(login.getMeno());
login.addListener(n -> field.setText(n));
Поскольку у вас есть только один экземпляр Login
(выследует использовать шаблон синглтона), другой кадр можно просто зарегистрировать в качестве слушателя.Вот как вы объявляете одноэлементный Login
класс:
class Login {
private static final Login INSTANCE;
private Login() {}
public Login getInstance() {
if (INSTANCE == null) { INSTANCE = new Login(); }
return INSTANCE;
}
private String meno;
// ...
}
Затем вы можете использовать его в своих JFrame
s следующим образом:
class MyFrame {
Login login = Login.getInstance();
// ...
}