# Eingabe in Textfeld 1 synchron in Textfeld 2 ausgeben



## maddin86 (26. Jan 2011)

Hallo,

ich möchte eine Eingabe des Benutzers in ein Textfeld (JTextField) synchron zur Eingabe in ein zweites Textfeld schreiben, also ausgeben.

Also in dem Moment, wo der Benutzer in textfeld 1 ein "a" eintippt erscheint in Textfeld 2 ebenfalls ein "a".

Geht das? Wenn ja, wie?


----------



## XHelp (26. Jan 2011)

Du kannst ja einen KeyListener dranschrauben und die Events einfach an das 2. Textfeld weiterleiten


----------



## SlaterB (26. Jan 2011)

beide sollten dasselbe Document zugewiesen bekommen, quasi das interne Model


----------



## Niki (26. Jan 2011)

ich würd einen DocumentListener verwenden.
DocumentListener (Java 2 Platform SE 5.0)


----------



## Niki (26. Jan 2011)

SlaterB hat gesagt.:


> beide sollten dasselbe Document zugewiesen bekommen, quasi das interne Model



sind dann die Änderungen nicht bidirektional?


----------



## SlaterB (26. Jan 2011)

eben (falls gewünscht)


----------



## maddin86 (26. Jan 2011)

Niki hat gesagt.:


> sind dann die Änderungen nicht bidirektional?



Das macht nichts, ist sogar eher ganz gut!

Also ich habe jetzt einen DocumentListener "dl" erstellt und dem entsprechenden textfeld zugewiesen (textfeld1.add(dl)). Wie genau gebe ich die Eingaben jetzt an das zweite Textfeld weiter?


----------



## SlaterB (26. Jan 2011)

ansonsten meine Variante


```
Document d = new PlainDocument();
tf1.setDocument(d);
tf2.setDocument(d);
```


----------



## XHelp (26. Jan 2011)

maddin86 hat gesagt.:


> Das macht nichts, ist sogar eher ganz gut!
> 
> Also ich habe jetzt einen DocumentListener "dl" erstellt und dem entsprechenden textfeld zugewiesen ...



Wenn es "sogar ganz gut" ist, dann benutzt doch den Verschlag von SlaterB


----------



## Niki (26. Jan 2011)

so funktioniert das nicht.

so sollte es klappen


```
tf1.getDocument().addDocumentListener(new DocumentListener() {

			public void removeUpdate(DocumentEvent e) {
				update();
			}

			public void insertUpdate(DocumentEvent e) {
				update();
			}

			public void changedUpdate(DocumentEvent e) {
				update();
			}
			
			private void update(){
				try {
				tf2.setText(tf1.getDocument().getText(0, tf1.getDocument().getLength()));
				} catch (BadLocationException e) {
					e.printStackTrace();
				}
			}
		});
};
```

oder eben slaters vorschlag


----------

