Ursprung des DocumentListeners rausbekommen?

gerritka

Mitglied
Ursprung des DocumentEvents rausbekommen?

Hi,

hab zwei Textfelder. Wenn jetzt in dem einen Textfeld was geändert wird, werden die beiden Funktionen für beide Textfelder ausgelöst, weil es ja nur eine Funktion "insertUpdate" gibt. Dies darf aber nicht passieren. Es soll vorher unterschieden werden, welches Textfeld sich geändert hat und dann auch nur die entsprechende Fkt. geladen werden.
Beim ActionListener ist dies ja einfach über Einlesen des ActionCommand's lösbar.
Nur wie bekomm ich das beim DocumentListener hin?

Danke für eure Hilfe!
 
Zuletzt bearbeitet:
Zwei Textfelder haben auch zwei Documente. Dafür gibt's zwei Möglichkeiten.

1. Jedem Document könnte ein eigener DocumentListener hinzugefügt werden. Damit hättest Du Deine Trennung.

2. DocumentEvent auslesen: de.getDocument()

Wenn Du noch das TextField wissen möchtest, könntest Du das Deinem DocumentListener im Konstruktor mit übergeben. ;-)
 
zu 1.
Wie bekomm ich das denn hin? Mit zwei neuen Klassen die jeweils die gleichen Methoden haben jedoch nur für das jeweilige die Fkt aufrufen?

zu 2.
mit getDocument bekomm ich aber ja nur den Text oder?...und da kann ja alles drin stehen

zu 3.
das wär dann für den fall das ich meine eigenen Listener Klassen schreibe?
 
Code:
public class MyDocumentListener implements DocumentListener {
 
private TextPane tp;
 
public MyDocumentListener(TextPane tp) {
  this.tp = tp;
}
 
public void insertUpdate(DocumentEvent de) {
  Document doc = de.getDocument();
  //mach was mit dem "doc" oder mit dem "tp"
} 
 
//die anderen Methoden leer implementieren
 
}

Code:
//innerhalb Deines TextPanes
this.getStyledDocument().addDocumentListener(new MyDocumentListener(this));

Somit hat jedes Document einen eigenen DocumentListener und noch dazu Zugriff auf das jeweilige TextPane. :)
 
Zurück