2012-01-20 13 views
5

Nie jestem pewien, czy zostało to wcześniej zadane, to jest trochę trudne do wyjaśnienia.Jak sprawdzić, czy zmienna w innej klasie została zaktualizowana?

mam 2 klas, klasy A i klasy B

Klasa A tworzy instancję klasy B (które to okno dialogowe, za pomocą JDialog). Użytkownik jest następnie proszony o wprowadzenie tekstu (zapisane w zmiennej String).

Jak poinformować klasę A, że użytkownik zaktualizował już zmienną i uzyskał jej kopię?

Korzystanie Java Swing BTW,

Dzięki

T

+0

Dlaczego nie można użyć actionPerformed (ActionEvent AE) dla pola tekstowego monitorować i informować ClassA o zmianie wartości? –

+0

Używam go, gdy użytkownik kliknie przycisk OK, aby zaktualizować zmienną, ale aktualizuje zmienną w klasie B – user913059

Odpowiedz

2

Jeśli okno jest modalne, a następnie kod jest zablokowana, dopóki okno jest zamknięte:

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) { 
    ... 

Jeśli okno nie jest modalny, musisz wywołać metodę wywołania zwrotnego, gdy nastąpi walidacja. To co MyFrame zawierałby

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); 
} 

oraz w MyDialog:

private MyFrame frame; 
public MyDialog(MyFrame frame) { 
    super(frame); 
    this.frame = frame; 
} 
... 
private void okButtonClicked() { 
    String text = textField.getText(); 
    frame.userHasInputSomeText(text); 
} 
+0

jaka byłaby MyFrame? atm Używam tylko \t prywatny końcowy JPanel contentPanel = new JPanel(); – user913059

+0

MyFrame jest obiektem, który zawiera metodę oddzwonienia. Może być dowolnego rodzaju. Po prostu jest to obiekt, który musi coś zrobić z tekstem wprowadzonym przez użytkownika. To przykład klasy A w twoim przykładzie. –

+0

Czy możesz pokazać mi, jak powinna wyglądać klasa A, nie jestem pewien czy w pełni rozumiem – user913059

Powiązane problemy