Swing xml in JTextPane mit EditorKit, StyledDocument & co.

Status
Nicht offen für weitere Antworten.

tomse

Mitglied
Hallo,

ich knoble jetzt schon laenger an folgendem Problem, hab haufenweise Tutorials und
Beispiele durchgesehen und ausprobiert, aber irgendwie fehlt mir der richtige Ansatz und
ich hoffe hier kann mir jemand einen Hinweis geben.

Was ich machen will:
Ich lese aus einer xml-Datei ein Element, welches xml-formatierten Text enthaelt.
Beispiel: <Elem>Here comes some <i>italic</i> text</Elem>.
Alles was sich zwischen den Elem-Tags befindet moechte ich jetzt in ein JTextPane
reinschmeissen, JTextPane.setText("Here comes some <i>italic</i> text"); und dieser
soll dann formatiert dargestellt werden. Also <i> wird dann wirklich als kursiv dargestellt,
<b> als fett, usw.
Der User kann jetzt in dem TextPane rumaendern und den Text Formatieren wie er will,
wobei kursiv, unterstrichen, fett, und code - ausgewaehlt werden kann.
Irgendwann spaeter wird das alles wieder in eine xml-Datei geschrieben und hier will
ich aus dem JTextPane z.Bsp. mittels "getText" den xml-String wieder rausbekommen.

Ansatz
Da ich es bei JTextPane gerne bei dem einfachen Interface belassen wuerde (sprich
zugriff ueber 'setText' und 'getText' und damit trasparent fuer den Rest der Appl) ,
koennte ich von dem JTextPane ableiten und
im ctor das verwendete EditorKit und Document durch ein eigenes ersetzen.
Dazu muesste ich in 'setText' den uebergebenen String zerstueckeln und ueber
entsprechende StyleAttribute an das Document weiterreichen... ??

Allerdings gestaltet sich das auslesen ueber getText entsprechend komplizierter,
da ich die StyleAttribute des Documents parsen muss, um diese xml-formatiert
zurueckzugeben.

Ein Paar Versuche hab ich mit HTMLEditorKit gemacht, da bekomme ich allerdings
eine komplette html-struktur zurueck (also mit <html><head> usw.). Die koennte
ich zwar parsen und alles bis <body> wegschmeissen, allerdings gefaellt mir der Rest
der Struktur auch nicht, da das xml-file lesbar bleiben soll, und ich keine Tags wie
<br style="..."> fuer einfache newlines haben moechte, sondern dann nur <br/>.
Ich muesste also den Rest auch parsen - so eine Art code-beautifyer...

Ihr seht es gibt eine Menge Probleme und irgendwie ist die Struktur von JTextPane,
EditorKit und Document nicht gerade intuitiv und das zusammenspiel schlecht dokumentiert.
Also wo soll ich ansetzen - oder alles ueber das Document abhandeln???

Also, wenn jemand konkrete Loesungsansaetze hat - dann nur her damit.
(Bitte keine blossen Verweise auf Tutorials oder sonstiges, ich sitz schon
seit ein paar Tagen an dem Problem und hab schon einige Stunden in Tutorials,
Beispiele, etc. investiert.)

Vielen Dank im Vorraus ...
 

diggaa1984

Top Contributor
hm wie kompliziert ist denn die Struktur der XML-datei, welche Elemente gibts denn da so!?
Warum ein <br/> für ein newLine .. geht das nicht auch mit nem weiteren <Elem>?

je nachdem wie du das aufbauen möchtest, kannst da recht gut mit der Struktur des Documents auskommen. Das auslesen der Styles und das mappen auf tags in xml und umgekehrt wird dir wohl nicht erspart bleiben, aber das ist je nach Umfang nicht so aufwendig.
 

tomse

Mitglied
<Elem> ist bloss ein Beispiel - dem User soll ermoeglicht werden den Inhalt eines
Elements zu modifizieren und spaeter wieder zurueckzuschreiben. Die xml-Datei wird
ueber ein referenziertes stylesheet interpretiert, und deshalb moechte ich auch bei den
normalen html-tags (i/b/u/br) bleiben, um diese einfach darzustellen.

Das auslesen der Styles und das mappen auf tags in xml und umgekehrt wird dir wohl nicht erspart bleiben

OK, aber wo am sinnvollsten? In den 'setText / getText' Methoden des TextPanes,
irgendwo in dem ueberschriebenen StyledDocument? In View? Und ist es sinnvoll
HTMLStyleDocument zu recyceln oder sollte man weiter oben erben (z.Bsp: DefaultStyledDocument)?
 

diggaa1984

Top Contributor
hm na ob man hier mit dem HTML-Editor ein wenig am mapping-algo kürzen kann oder nicht, weiss ich nun nicht, ich habe bisher nur mit JTextPane und DefaultStyledDocument für ein Syntaxhighlighting gearbeitet.

Was das Mappen angeht, weiss ich nun nicht genau, was in einem Html-kompatiblen Editor bei insertString schon alles automatisch passiert. Wenn nix passiert, dann könntest jedenfalls beim insert, wenn du dort <i>foo</i> reinbekommst, das ganze gleich im Document analysieren und dir die richtigen Attribute auf den Text legen lassen.

Der andere Weg, von Editor in xml, könnte sogar durch eine externe Klasse geregelt werden, die ein Document übergeben bekommt, und den Inhalt nach bestem Wissen und Gewissen gemäß deinen Regel als xml umsetzt.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
J Swing JTextpane aktuallisiert nicht den setText? AWT, Swing, JavaFX & SWT 9
M Strings im JTextPane vergleichen und mit StyledDocument formatieren AWT, Swing, JavaFX & SWT 3
X JTextPane automatischer Zeilenumbruch IM Wort AWT, Swing, JavaFX & SWT 2
R GUI Element in einer Methode aktualisieren (JTextPane) AWT, Swing, JavaFX & SWT 13
M Swing JTextPane, Bilder und Text-flow AWT, Swing, JavaFX & SWT 2
D Swing Breite einer HTML Tabelle in einer JTextPane AWT, Swing, JavaFX & SWT 6
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
S Swing JtextPane sau langsam AWT, Swing, JavaFX & SWT 15
J Swing JTextPane mit JScrollPane auf JPanel scrollen nicht AWT, Swing, JavaFX & SWT 6
C JTextPane scrollt mit setText() immer nach oben AWT, Swing, JavaFX & SWT 2
S Swing Style Attribute aus JTextPane kopieren AWT, Swing, JavaFX & SWT 1
E JTextPane Focus AWT, Swing, JavaFX & SWT 1
TheJavaKid JTextPane: komplexe Formatierung (links) AWT, Swing, JavaFX & SWT 2
B Swing JTextPane - Einfärbungen auf "default" AWT, Swing, JavaFX & SWT 2
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
T JtextPane Zeile aktualisieren AWT, Swing, JavaFX & SWT 3
T Hintergrundbild in JTextPane fixieren AWT, Swing, JavaFX & SWT 2
M Swing JTextPane frisst Anführungszeichen AWT, Swing, JavaFX & SWT 2
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
H Swing JTextPane hat unästhetisches Scrollbar AWT, Swing, JavaFX & SWT 3
R Swing Renderproblem bei HTML in einer JTextPane AWT, Swing, JavaFX & SWT 12
N Swing JTextPane zur Anzeige von HTML AWT, Swing, JavaFX & SWT 2
E Swing jTextPane Text datei anzeigen AWT, Swing, JavaFX & SWT 7
xehpuk Swing Line-wrapping von JTextPane (in JScrollPane) AWT, Swing, JavaFX & SWT 3
Tobse Swing [JTextPane] Farbliche Hervorhebung AWT, Swing, JavaFX & SWT 9
X Swing JTextPane bei Größenänderung Formatierung behalten AWT, Swing, JavaFX & SWT 11
0 JTextPane copy/paste trotz editable(false) ? AWT, Swing, JavaFX & SWT 10
T Swing JTextPane Tastatureingabe abfangen AWT, Swing, JavaFX & SWT 4
B Durchsichtiges JScroll und JTextPane AWT, Swing, JavaFX & SWT 4
xehpuk Swing JTextPane in JScrollPane wird nicht ordentlich neugezeichnet AWT, Swing, JavaFX & SWT 3
S Swing JTextPane append formatprobleme AWT, Swing, JavaFX & SWT 5
C JTextPane / JEditorPane ohne Keywords farbig machen AWT, Swing, JavaFX & SWT 4
C Zeilenumbruch von JTextPane wird nicht erkannt AWT, Swing, JavaFX & SWT 2
S JEditorPane oder JTextPane? AWT, Swing, JavaFX & SWT 2
P Aktuelle Zeile in JTextPane farblich hervorheben AWT, Swing, JavaFX & SWT 3
J JTextPane Background setzen AWT, Swing, JavaFX & SWT 6
T Text in JTextPane vertikal (!) zentrieren AWT, Swing, JavaFX & SWT 4
M Zugriff paralleler Threads auf selbes JTextPane AWT, Swing, JavaFX & SWT 6
M JTextPane - bewegungsloses Hintergrundsbild (Duplikat) AWT, Swing, JavaFX & SWT 2
B JTextPane formatierten Inhalt speichern AWT, Swing, JavaFX & SWT 2
E JTextPane setText ignoriert \n AWT, Swing, JavaFX & SWT 6
P Swing Sichtbaren teil eines JTextPane herausbekommen (mit JScrollPane) AWT, Swing, JavaFX & SWT 2
C Swing JTextPane zeigt HTML-Text aus Variable nicht an :( AWT, Swing, JavaFX & SWT 3
T Zeichen zählen JTextPane AWT, Swing, JavaFX & SWT 4
K Swing JTextPane Formatierungen SyntaxHighlighting AWT, Swing, JavaFX & SWT 11
F Mit TAB JTextPane wechseln AWT, Swing, JavaFX & SWT 5
J JSlider auf JTextPane? AWT, Swing, JavaFX & SWT 2
S Buchstabenpositionen in JTextPane erhalten..? AWT, Swing, JavaFX & SWT 5
I JTextPane und Hyperlink (ohne JEditorPane) AWT, Swing, JavaFX & SWT 5
T Swing JTextArea, JTextPane, JEditorPane...Unterschied?! AWT, Swing, JavaFX & SWT 3
A Swing JTextPane sehr langsam AWT, Swing, JavaFX & SWT 6
P Drucken von Jtextpane mit Seitenangabe AWT, Swing, JavaFX & SWT 1
M Swing JTextPane mit JScrollPane soll aussehen wie JLabel AWT, Swing, JavaFX & SWT 3
A JTextPane: Text hinzufügen AWT, Swing, JavaFX & SWT 9
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
K Swing jTextPane zeilenumbruch AWT, Swing, JavaFX & SWT 2
Stillmatic JTextPane langsam? AWT, Swing, JavaFX & SWT 5
E Swing JTextPane linewrap AWT, Swing, JavaFX & SWT 4
M Swing [JTextPane] Cursor lässt sich nicht mit Pfeiltasten bewegen AWT, Swing, JavaFX & SWT 3
M Cursor setzen im JTextPane AWT, Swing, JavaFX & SWT 3
M Formatierungsfehler JTextPane WARUM ?? AWT, Swing, JavaFX & SWT 4
JavaKaffee Array auslesen in jTextPane? AWT, Swing, JavaFX & SWT 9
E JTextPane Bold Italic und Co AWT, Swing, JavaFX & SWT 6
M JTextPane Ende des Feldes AWT, Swing, JavaFX & SWT 4
D JTextPane - Text andersfarbig unterstreichen AWT, Swing, JavaFX & SWT 7
P Probleme mit JTextpane AWT, Swing, JavaFX & SWT 7
M Größe von JTextPane manuell bei Bedarf anpassen AWT, Swing, JavaFX & SWT 6
bugmenot JTextPane String stimmt nicht mit übergebenem String überein AWT, Swing, JavaFX & SWT 9
C JTextPane <br oder <p> statt \n AWT, Swing, JavaFX & SWT 2
C JTextPane HTML und eigene Tags AWT, Swing, JavaFX & SWT 10
G JTextPane durchsichtig? AWT, Swing, JavaFX & SWT 6
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
S JTextPane: Probem mit AlignmentAction AWT, Swing, JavaFX & SWT 3
J Problem mit JTextPane & JScrollPane (horizontal) AWT, Swing, JavaFX & SWT 3
B JTextPane und Image importieren in HTML String. AWT, Swing, JavaFX & SWT 2
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
J Html in JTextPane anzeigen? AWT, Swing, JavaFX & SWT 2
Steev JTextPane mit Textformatierung funktioniert nicht AWT, Swing, JavaFX & SWT 5
S JTextPane - markierten Text Formatieren AWT, Swing, JavaFX & SWT 11
P HTMLDocument in einem JTextPane. Anhängen von HTML-Code AWT, Swing, JavaFX & SWT 2
M Makierten Text in JTextPane zentrieren AWT, Swing, JavaFX & SWT 2
F JTextPane aktive Zeile AWT, Swing, JavaFX & SWT 2
G insert & JTextPane AWT, Swing, JavaFX & SWT 4
J JTextPane bekommt keinen Focus! AWT, Swing, JavaFX & SWT 3
S Farben eienr JTextPane dynamisch zuweisen AWT, Swing, JavaFX & SWT 2
R JTextPane scrollen vermeiden AWT, Swing, JavaFX & SWT 2
B Feste Breite einer JTextPane, die HTML anzeigt AWT, Swing, JavaFX & SWT 8
A JScrollPane in JTextPane AWT, Swing, JavaFX & SWT 2
B Swing Logging: Ein/Ausblenden eines scrollenden JTextPane AWT, Swing, JavaFX & SWT 2
F Java JTextPane AWT, Swing, JavaFX & SWT 13
Saxony JTextPane - letzte Zeile löschen AWT, Swing, JavaFX & SWT 4
TheJavaKid LineWrap & WrapStyleWord in JTextPane AWT, Swing, JavaFX & SWT 3
G Zeilenabstand bei HTML-Texten in JLabel/JTextPane AWT, Swing, JavaFX & SWT 7
O Swing Xml highlightning mit JTextPane und Regular expressions AWT, Swing, JavaFX & SWT 5
J JTextPane Alignment AWT, Swing, JavaFX & SWT 6
Y entfernten String einer JTextPane per DocumentListener AWT, Swing, JavaFX & SWT 5
B Ein großes JTextPane komplett drucken AWT, Swing, JavaFX & SWT 2
7 Latex/MathML Code in JTextPane AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben