tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
634
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    lazydog lazydog ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    33
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    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
     

  2. #2
    wakoz wakoz ist offline Mitglied Gold
    Registriert seit
    Apr 2010
    Beiträge
    114
    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
     

  3. #3
    lazydog lazydog ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    33
    Hallo wakoz,

    Schon mal mit e.getSource probiert?
    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....mentEvent.html

    vielen Dank trotzdem für die Antwort

    ld
     

  4. #4
    wakoz wakoz ist offline Mitglied Gold
    Registriert seit
    Apr 2010
    Beiträge
    114
    Zitat Zitat von lazydog Beitrag anzeigen
    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....mentEvent.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

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    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

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

    PS: gib Bescheid wenn es klappt
    Geändert von wakoz (05.02.11 um 23:10 Uhr) Grund: PS
     

  5. #5
    lazydog lazydog ist offline Mitglied Bronze
    Registriert seit
    Feb 2006
    Beiträge
    33
    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
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 03.08.10, 17:08
  2. DocumentListener
    Von MariusMeier im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 07.05.08, 14:27
  3. CSplitterWnd und veränderte Fenstergröße
    Von NinjaOne im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 16.09.05, 18:34
  4. Zuletzt veränderte Zeile auslesen ?
    Von pnx im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 16.11.04, 19:52
  5. ein Klick zwei veränderte Seiteninhalte
    Von Bodylotion im Forum PHP
    Antworten: 2
    Letzter Beitrag: 04.11.04, 20:47