DocumentListener/changedUpdate(), wie komme ich an veränderte Attribute?

lazydog

Mitglied
Hallo,

folgende Frage hätte ich mal - vielleicht weiss ja jemand was:

ich habe ein Objekt vom Typ StyledDocument und muss auf Änderungen hieran reagieren. Dazu dient mir eine Implementierung von DocumentListener. Mit der Methode changedUpdate(DocumentEvent e) des Listeners sollte es eigentlich möglich sein, u.a. Formatänderungen, die zum Beispiel mit setCharacterAttributes(args) vorgenommen werden, auszulesen. Die Frage ist nur - WIE?

Die String-Ausgabe des EventObjekts (s.u.) zeigt mir, dass die AttributÄnderung Bestandteil des Events ist, nur gibt es keine Methode, daran zu kommen

Code:
public class MyStyledDocumentListener
implements DocumentListener
{

	public void insertUpdate(DocumentEvent e) {
		; // do sth
	}

	public void removeUpdate(DocumentEvent e) {
		; // do sth
	}

	public void changedUpdate(DocumentEvent e) {
		System.out.println((DefaultDocumentEvent)e);
	}
}

Ausgabe von changedUpdate ist dann: [javax.swing.text.DefaultStyledDocument$AttributeUndoableEdit@1c486f2 hasBeenDone: true alive: true]

Hat da jemand eine Idee****

Besten Dank für jeden Tipp

lazydog
 
Wenn alles in deinem event steht kommst du über e an alles aus dem event ran.


Schon mal mit e.getSource probiert?
du holst dir mit getSorce das objekt welches da event geschmissen hat. wenn du es in einem Objekt mit festen typ hast kannst du von dort alles abfragen was du brauchst
 
Hallo wakoz,



bei DocumentEvent übernimmt das e.getDocument(). Die Quelle allein nützt mir aber nichts, da ich ja wissen möchte, welche Änderung an dieser durchgeführt wurde - und dafür hat DocumentEvent offensichtlich nichts im Angebot s.u.

http://download.oracle.com/javase/1...xt/AbstractDocument.DefaultDocumentEvent.html

vielen Dank trotzdem für die Antwort

ld

guter link versuch es mal mit e.getchange() laut doku soll es genau das returnen was du haben willst

DocumentEvent.html

versuche es erst mal mit dieser Methode weil sie fürs isert und remove den Text liefern kann

Java:
public class MyStyledDocumentListener
implements DocumentListener
{
 
    public void insertUpdate(DocumentEvent e) {
        ; // do sth
    }
 
    public void removeUpdate(DocumentEvent e) {
        ; // do sth
    }
 
    public void changedUpdate(DocumentEvent e) {
        System.out.println((DefaultDocumentEvent)e);
        Element ele = e.getChange(e.getDocument());
        System.out.println(ele.getString()); // Hier musst du sehen wie du an die String information 
                //  aus dem element kommst die genaue Metode kenne ich nicht sollte aber 
               // ähnlich beim JTree Element sein
    }
}

alternativ geht

Java:
e.getDocument.getText(e.getOffset(), e.getLength())
wobei dies nur für insert funktioniert

PS: gib Bescheid wenn es klappt ;)
 
Zuletzt bearbeitet:
Leider funktioniert das so nicht.

e.getChange(e.getDocument())

die Methode erwartet kein Objekt vom Typ Document sondern javax.swing.text.Element. Ich hatte damit auch schon herumlaboriert, z.B. indem ich das betroffene Character- oder ParagraphElement übergebe. War leider auch erfolglos!

e.getDocument.getText(e.getOffset(), e.getLength())

der geänderte Text alleine hilft mir auch nicht weiter. changedUpdate() sollte mir eigentlich u.a. Formatänderungen mitteilen und hinter denen bin ich eigentlich her!

vielen Dank

ld
 
Zurück