# jTextField - Text stets überschreiben



## MichiM (2. Jan 2008)

Hallo,

gibt es für die Swing-Komponente jTextField eine einfache Möglichkeit (üblicherweise Flag setzen), Eingaben stets im Overwrite-Modus zu verarbeiten? :

Bestehender Text an der Cursorposition des aktiven Feldes soll nicht nach rechts gerutscht, sondern überschrieben werden.

Gruß Michi


----------



## Gast (2. Jan 2008)

Wann soll denn das überschreiben passien ? Gehe mal davon aus, dass Du mit überschreiben das löschen des Feldes meinst.

Vielleicht bei einem FocusGained Event?


----------



## MichiM (2. Jan 2008)

Nicht gleich alles löschen, sondern nur den bestehenden Text überschreiben. Insert off quasi.  :wink:


----------



## Guest (3. Jan 2008)

Ich hätte da drei Lösungen, die aber beide etwas Arbeit machen. Du würdest ein eigenes JTextField basteln, das von JTextField abgeleitet ist.
1. Du reagierst auf jedes KeyEvent und löschst dabei einfach jeweils den nächsten Buchstaben.
2. Du reagierst ebenfalls auf KeyEvents, aber diese führen nur dazu, dass immer der nächste Buchstabe markiert wird.
3. Du reagierst auf ein Event FocusGained und lässt das Programm dann "insert" drücken:

```
import java.awt.event.;

Robot rob = new Robot();
rob.keyPress(KeyEvent.VK_INSERT);
rob.delay(2);
rob.keyRelease(KeyEvent.VK_INSERT);
```
oder in der Art. Bei FocusLost gäbe es dann noch die Möglichkeit, dieses Insert wieder zu entfernen, damit der Anwender danach wieder normal schreiben kann.

Hoffe, ich konnte helfen
Gruss
Martin[/code]


----------



## Niki (3. Jan 2008)

Ich denke die beste Variante ist dein eigenes Document zu erzeugen:


```
JTextField tf = new JTextField();
tf.setDocument(createOverwriteDocument());

private Document createOverwriteDocument() {
		Document doc = new PlainDocument() {
			@Override
			public void insertString(int offs, String str, AttributeSet a)
					throws BadLocationException {

				String text = this.getText(0, this.getLength());
				
					if (offs < text.length()) {
						super.remove(offs, str.length());
					}
					super.insertString(offs, str, a);
				
			}
		};

		return doc;
	}
```


----------

