Übergabe per Referenz.

Status
Nicht offen für weitere Antworten.

Volker II

Mitglied
statt Instanz.

Hallo.

Ich bin mir nicht sicher ob ich es sprachlich einwandfrei rüberbringe, mein Punkt ist folgender. Ich habe zwei unterschiedliche Klassen die via Eingabefelder vom Benutzer Daten bekommen. Die genaue Form ist an dieser Stelle nicht so wichtig, wichtig ist, dass die Inhaltsänderung eines JTextFields x der Klasse y automatisch auch im JTextField a der Klasse b sichtbar wird.

Der Denkansatz der Klasse y per setMethode den Inhalt des "Feldes" a der Klasse b zu übergeben macht wenig Sinn, da es keine Rückmeldung eines events des "Feldes" a der Klasse b an die Klasse y gibt den Inhalt des "Feldes" x ebenfalls zu ändern.

Bleibt die Überlegung, der Klasse y die Referenz des JTextFields x zu übergeben. Wie sieht das syntaktisch aus und geht dies überhaupt?

Gruss
Volker
 
Wenn Du nur einmal mit dem new Operator ein Textfeld erzeugst und dieses in beiden Klassen setzt, dann zeigen die Referenzen in beiden Klassen aufs selbe Objekt. Wenn eine Klasse nun dieses Objekt ändert, dann hat das also auch automatisch Auswirkungen auf die andere Klasse.

Mit anderen Worten, ja das geht, z.B. so ungefähr:

Code:
Y y = new Y();
B b = new B();
JTextField tf = new JTextField();
y.setTextField(tf);
b.setTextField(tf);
 
byto hat gesagt.:
Wenn Du nur einmal mit dem new Operator ein Textfeld erzeugst und dieses in beiden Klassen setzt, dann zeigen die Referenzen in beiden Klassen aufs selbe Objekt. Wenn eine Klasse nun dieses Objekt ändert, dann hat das also auch automatisch Auswirkungen auf die andere Klasse.

Mit anderen Worten, ja das geht, z.B. so ungefähr:

Code:
Y y = new Y();
B b = new B();
JTextField tf = new JTextField();
y.setTextField(tf);
b.setTextField(tf);


mhhh.

Der Begriff Referenz schwimmt bei mir zur Zeit (JAVA vs C/C++)... ich versuche es noch einmal anders. In meiner Klasse Y wird durch umfangreiches Erfassen und rechnen ein Wert ermittelt. Dieser Wert ist an sich ein Integer, den ich zum String umformatiere und dann darstellen will in einem JTextField, dass auuserhalb dieser Klasse liegt. Also bin ich hingegangen und habe in der Klasse Y ein JTextField X erzeugt und übergebe per setMethode die Referenz A des JTextFields aus Klasse B.

Wenn ich nun in der Klasse Y per interner Methode dem JTextField X mit X.setText(); den Wert übergebe, erwarte ich das automatisch sich die Darstellung des JTextFields A der Klasse B auf dem Bildschirm ändert. Passiert aber nicht. An sich müsste ich ja in der Klasse Y ein event für die Klasse B erzeugen damit die Klasse B das JTextField A zum einen per getMethode sich den neuen Inhalt für JTextField X von der Klasse B abholt und dies dann neu zeichnet.

Meine Überlegung war, das JTextField a la C/C++-Referenz zu übergeben... aber in allen Bücher steht - so geht das nicht...

Nun habe ich ein Object der Klasse B in der Klasse Y erzeugt und habe darüber vollen Zugang auf die public Fields der Klasse B... mal sehen ob das so funzt
 
so funzt es, aber so habe ich den Zugriff über den gesamten public-Bereich meiner ANwendung in einer Klasse, die Anwendung nutzt. Auch nicht wirklich sicher....
 
Also, wenn ich das richtig sehe, dann willst du doch einfach nur 2 JTextField instanzen haben die immer den gleichen Inhalt haben?

Ist doch ganz einfach, beide Textfelder müssen das selbe Model benutzen!

Hier ein kleines Beispiel:
Code:
  public static void main(String[] args) {
    JFrame aFrame = new JFrame("Text Felder");
    aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    aFrame.getContentPane().setLayout(new GridLayout(2, 1));

    JTextField textField1 = new JTextField(40);
    JTextField textField2 = new JTextField(40);
    textField2.setDocument(textField1.getDocument());
    aFrame.getContentPane().add(textField1);
    aFrame.getContentPane().add(textField2);
    
    aFrame.pack();
    aFrame.setVisible(true);
  }
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben