あなたの問題は、これに似ている:
public class FooA {
public static void main(String[] args) {
A a = new A();
a.setFieldA("bar");
B b = new B();
System.out.println(b.getFieldA()); // this will still print "foo"
}
}
class A {
String fieldA = "foo";
public void setFieldA(String a) {
this.fieldA = a;
}
public String getFieldA() {
return fieldA;
}
}
class B extends A {
}
オブジェクトaのFIELDAに変更を加えた場合、それらの両方が別個FIELDA年代を運ぶために、それはオブジェクトbに影響を与えません。
class C {
private A a;
C(A a) {
this.a = a;
}
public String getAFieldA() {
return a.getFieldA();
}
}
その後にこれを解決する方法は、Aを拡張するが、現在のオブジェクトへの参照を使用するように、クラスCのように2番目のクラスを作成し、必要に応じてオブジェクトから必要な情報を抽出しないことですメインあなたが行うことができます:あなたのコードに変換
public class FooA {
public static void main(String[] args) {
A a = new A();
a.setFieldA("bar");
B b = new B();
System.out.println(b.getFieldA()); // this will still print "foo"
C c = new C(a);
System.out.println(c.getAFieldA()); // this will print "bar"
}
}
を、それはそうのようになります。
public class Register_window extends javax.swing.JFrame {
private JTextField jTextField = new JTextField();
// String u; // this is not necessary
// ...
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
// ...
// somehow notify Data_storer that a field has changed.
// ...
} finally {
}
}
public String getTextFieldText() {
return jTextField.getText();
}
}
そしてData_storerクラス:
public class Data_storer extends Register_window {
private Register_window registerWindow;
// pass the current visualized Register_window instance into constructor
public Data_storer(Register_window register_window) {
this.registerWindow = register_window;
}
public Vector people_database() throws Exception {
// ...
System.out.println("The name of the user as printed in Data_storer(inherited from Register_window) is:"
+ registerWindow.getTextFieldText());
// ...
}
}
もう1つの考えられる解決策は、GUIをデータストアのインスタンスに保持させ、ボタンプッシュで情報をデータストアオブジェクトに「プッシュ」させることです。私。たとえば、
public class Register_window extends javax.swing.JFrame {
private JTextField jTextField = new JTextField();
private Data_storer dataStorer = new Data_storer();
// ...
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
// ...
Vector vect = dataStorer.people_database(jTextField.getText());
// do something with the vect here
}
//...
}
}
class Data_storer extends Register_window {
public Vector people_database(String text) {
//...
}
}
私は、クラスData_storerに表示されている値がnullである場合、文字列uを印刷しています... ...助けを借りてください....事前に感謝! – kosmicbug
質問を質問に入れて、コメントではなく、より良い形式にしてください..または..あなたが編集できるかどうかわかりませんが、誰かがこれを編集してください。 – Lacrymology
** bold **クラスRegister_windowに文字列uを出力すると、入力された文字列が正確に表示されますが、Data_storerクラスに表示すると、値はnullになります!! – kosmicbug