2012-01-20 7 views
5

これが以前に尋ねられたかどうかは分かりませんが、説明するのは少し難しいです。別のクラスの変数が更新されていることを確認する方法は?

私は2つのクラス、クラスAおよびクラスB

クラスA(JDialogのを使用してダイアログボックスである)クラスBのインスタンスを作成しています。 ユーザーはテキスト入力を要求されます(文字列変数に格納されます)。

クラスAに、ユーザーが変数を更新してそのコピーを取得したとするにはどうすればよいですか?

ダイアログがモーダルである場合は、ダイアログが閉じられるまで、そのコードがブロックされている、ところで

おかげ

T

+0

ClassAに値が変更されていることを監視して知らせますか? –

+0

ユーザーが変数を更新するために[OK]ボタンをクリックしたときにクラスBの変数を更新しているときに使用します – user913059

答えて

2

をするJava Swingを使っ:

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にが含まれているだろうかです:

あなたがテキストボックスのためのactionPerformed(のActionEvent AE)を使用することはできませんなぜ
private MyFrame frame; 
public MyDialog(MyFrame frame) { 
    super(frame); 
    this.frame = frame; 
} 
... 
private void okButtonClicked() { 
    String text = textField.getText(); 
    frame.userHasInputSomeText(text); 
} 
+0

MyFrameは何ですか? atm私のみ使用しています\t プライベート最終JPanel contentPanel =新しいJPanel(); – user913059

+0

MyFrameは、コールバックするメソッドを含むオブジェクトです。どのような種類のものでもよい。それは、ユーザーが入力したテキストで何かをしなければならないのはオブジェクトだからです。あなたの例では、クラスAのインスタンスです。 –

+0

クラスAがどのように見えるかを私に見せてもらえますか、私は完全に理解しているかわかりません – user913059

関連する問題