Как проверить, что переменная в другом классе была обновлена? - PullRequest
5 голосов
/ 20 января 2012

Не уверен, если это было задано ранее, это немного сложно объяснить.

У меня есть 2 класса, класс A и класс B

Класс A создает экземпляр класса B (который является диалоговым окном, использующим JDialog).Затем у пользователя запрашивается ввод текста (сохраняется в строковой переменной).

Как мне сообщить классу A, что пользователь теперь обновил переменную и получить ее копию?

ИспользованиеJava Swing, кстати,

Спасибо

T

Ответы [ 2 ]

4 голосов
/ 20 января 2012

В общем случае Шаблон наблюдателя имеет дело с такими случаями

2 голосов
/ 20 января 2012

Если диалоговое окно является модальным, то код блокируется, пока диалоговое окно не будет закрыто:

dialog.setVisible(true);
// blocked here until the dialog is closed. The dialog stores the input in a
// field when OK is clicked in the dialog
if (dialog.getTextInputtedByTheUser() != null) {
    ...

Если диалоговое окно не является модальным, тогда вам нужно заставить его вызывать метод обратного вызова, когда происходит проверка. Это то, что MyFrame будет содержать

private void showDialog(
    MyDialog dialog = new MyDialog(this);
    dialog.setVisible(true);
}

public void userHasInputSomeText(String text) {
    // do whatever you want with the text
    System.out.println("User has entered this text in the dialog: " + text);
}

и в MyDialog:

private MyFrame frame;
public MyDialog(MyFrame frame) {
    super(frame);
    this.frame = frame;
}
...
private void okButtonClicked() {
    String text = textField.getText();
    frame.userHasInputSomeText(text);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...