JTextPane HTML und eigene Tags

Status
Nicht offen für weitere Antworten.

Capasso

Bekanntes Mitglied
Hallo,

ich bin gerade dabei ein JTextPane zu schreiben das HTML anzeigen kann welches durch Buttons angepasst werden kann.

(siehe auch: Suche fertigen HTML editor - java-forum.org)

Das mit den HTML Tags funktioniert auch soweit. Jetzt möchte ich aber zusätzlich eigene tag verwenden.

Bis jetzt bin ich aber noch nicht fündig geworden wie ich dem JTextPane (Mit HTMLEditorKit und HTMLDocument) beibringe das es bei <wrongWord>fehler</wrongWord> das wort fehler rot darstellt und <wrongWord> weglässt

Gruß
Capasso
 
Zuletzt bearbeitet von einem Moderator:

Ebenius

Top Contributor
Das HTMLEditorKit kennt HTML. Das Tag "wrongWord" gehört nicht zu HTML. Du könntest Dir ein eigenes (von mir aus von HTMLEditorKit abgeleitetes) Editor Kit schreiben. Aber das möchtest Du nicht.

Warum benutzt Du nicht die Möglichkeiten die Dir HTML ohnehin schon bietet.
  1. Benutze das span-Tag (span inline oder das div-Tag für ganze Bereiche) mit style-Attribut:
    HTML:
    Das ist mein Text <span style="color:red">mit einem Fehler</span> drin
  2. Benutze das span/div-Tag mit class-Attribut:
    HTML:
    Das ist mein Text <span class="error">mit einem Fehler</span> drin
    ... und definiere die Klasse "error" im StyleSheet:
    Code:
    *.error { color:red }
Ebenius
 

Capasso

Bekanntes Mitglied
ja könnte ich machen.

Eine Frage hätte ich aber noch. wie bekomme ich es hin das ich eine Action habe, die je nachdem ob span vorhanden ist dieses setzt oder entfernt.

Also aus
HTML:
<span class="error">falsch</span>

falsch

macht und aus

falsch

HTML:
<span class="error">falsch</span>
 

Capasso

Bekanntes Mitglied
ok,

sagen wir ich hab folgendes Dokument
HTML:
<html>
...
<body>
 <b> Das ist ein fetter <span class="error">falsch</span> text </b>
</body>

Jetzt möchte ich einen Button haben, der folgendes macht.

Ich habe das Wort "falsch" per Maus markiert. Jetzt drücke ich den Button. Dann verschwindet <span class="error"> und das Document sieht so aus:
HTML:
<html>
...
<body>
 <b> Das ist ein fetter falsch text </b>
</body>

Wenn ich falsch weiterhin markiert habe und den Button nochmal drücke soll span wieder erscheinen, also
HTML:
<html>
...
<body>
 <b> Das ist ein fetter <span class="error">falsch</span> text </b>
</body>

Wichtig wäre das andere tags davon unberührt bleiben.

Also aus
HTML:
 <b><span class="error"><u>falsch</u></span></b>

wird
HTML:
 <b>u>falsch</u></b>
 

Ebenius

Top Contributor
Wichtig wäre das andere tags davon unberührt bleiben.

Also aus
HTML:
 <b><span class="error"><u>falsch</u></span></b>

wird
HTML:
 <b>u>falsch</u></b>
Dazu hab ich doch erstmal eine Frage: Was passiert, wenn dieser Text so markiert werden würde:
Code:
Dies ist <b>ein falsch</b> Text
                ^^^^^^^^^^^^^^^
... und jemand den Button drückt?

Ebenius
 

Capasso

Bekanntes Mitglied
das überleg ich mir wenn es soweit ist :)

das ist momentan noch nicht relevant.
Nachher werden nur komplette wörter markiert und automatisch verändert. Dann verschwindet der Button.
 

Ebenius

Top Contributor
Hmpf. Ich hab's auf die Schnelle nicht sauber hinbekommen. Wenn ich's nicht vergesse, dann beschäftige ich mich am Abend nochmal damit.

Ebenius
 

Capasso

Bekanntes Mitglied
das wäre super.

momentan verwende ich das Tag <strike> um die Wörter zu markieren.
Damit geht es recht simpel, weil alle Methoden usw. schon vorhanden sind.

[highlight=Java]
class StrikeThroughAction extends StyledEditorKit.StyledTextAction{

boolean wrong = true;

public StrikeThroughAction(){
super(StyleConstants.StrikeThrough.toString());
}

public void setWrong(boolean b) {
wrong = b;
}

public void actionPerformed(ActionEvent ae){
JEditorPane editor = getEditor(ae);
if (editor != null) {
StyledEditorKit kit = getStyledEditorKit(editor);
MutableAttributeSet attr = kit.getInputAttributes();
boolean strikeThrough = (StyleConstants.isStrikeThrough(attr)) ? false : true;
//System.out.println(strikeThrough+" "+wrong);
if (strikeThrough && wrong) {
SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setStrikeThrough(sas, true);
setCharacterAttributes(editor, sas, false);
} else if (!wrong){
SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setStrikeThrough(sas, false);
setCharacterAttributes(editor, sas, false);
}

}
}
}[/highlight]
 
Zuletzt bearbeitet von einem Moderator:

Capasso

Bekanntes Mitglied
?? Wo ist eigentlich der Quellcode hin der in meinem letzten Beitrag war ??

Egal.

Ich denke ich werde doch einen eigenen Tag definieren müssen.
Aber mir ist bisher nicht klar welche Klassen ich wie überschreiben muss

Klar ist das ich ne geerbte Klasse vom javax.swing.text.html.HTML brauche, also
[highlight=Java]
public class DWHtml extends HTML{

public static class DWTag extends Tag{
protected DWTag(String id) {
super(id, false, false);
}
};

public static final DWTag WRONG = new DWTag("wrong");


}
[/highlight]

und eine geerbte Klasse von javax.swing.text.html.HTMLEditorKit in der widerum ne geerbte Version von der HTMLFactory steckt.
[highlight=Java]
public static class HTMLFactoryExtended extends HTMLFactory implements ViewFactory{

public HTMLFactoryExtended()
{
}

public View create(Element elem)
{
Object obj = elem.getAttributes().getAttribute(StyleConstants.NameAttribute);
if(obj instanceof HTML.Tag) {
HTML.Tag tagType = (HTML.Tag)obj;
//System.out.println("tagtype: "+tagType);
if (tagType.toString().equalsIgnoreCase(DWHtml.WRONG.toString())) {
return new WrongWordView(elem);
}

}
return super.create(elem);
}
}

[/highlight]

Die Klasse funktioniert aber schon nicht ganz sauber, weil ich auf Stringgleichheit vergleichen muss (tagType.toString().equalsIgnoreCase(DWHtml.WRONG.toString()) ).

Dann hab ich ausprobiert ne View zu schreiben. Damit hab ich es hinbekomen das dar Tag nicht angezeigt wird sondern ein roter hintergrund an der Stelle wo dar tag war. Aber das Wort zwischen dem Tag war davon unberührt.

Da hänge ich momentan fest.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
D Swing Breite einer HTML Tabelle in einer JTextPane AWT, Swing, JavaFX & SWT 6
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
C Swing JTextPane zeigt HTML-Text aus Variable nicht an :( AWT, Swing, JavaFX & SWT 3
E Swing JTextPane Inhalt(Text und Bilder) als HTML text bekommen AWT, Swing, JavaFX & SWT 3
GilbertGrape Fehler bei HTML in JTextPane AWT, Swing, JavaFX & SWT 2
B JTextPane und Image importieren in HTML String. AWT, Swing, JavaFX & SWT 2
J Html in JTextPane anzeigen? AWT, Swing, JavaFX & SWT 2
P HTMLDocument in einem JTextPane. Anhängen von HTML-Code AWT, Swing, JavaFX & SWT 2
B Feste Breite einer JTextPane, die HTML anzeigt AWT, Swing, JavaFX & SWT 8
G Zeilenabstand bei HTML-Texten in JLabel/JTextPane AWT, Swing, JavaFX & SWT 7
S html in jTextPane klappt teilweise und teilweise nicht AWT, Swing, JavaFX & SWT 6
C HTML in JTextPane anzeigen AWT, Swing, JavaFX & SWT 2
M Mit JTextPane erstelltes Dokument als HTML-Code ausgeben AWT, Swing, JavaFX & SWT 4
Z JTextPane (text/html): Schrift festlegen AWT, Swing, JavaFX & SWT 5
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
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
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
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
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
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
T Swing xml in JTextPane mit EditorKit, StyledDocument & co. 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
G JTextPane durchsichtig? AWT, Swing, JavaFX & SWT 6
S JTextPane: Probem mit AlignmentAction AWT, Swing, JavaFX & SWT 3
J Problem mit JTextPane & JScrollPane (horizontal) AWT, Swing, JavaFX & SWT 3
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
Steev JTextPane mit Textformatierung funktioniert nicht AWT, Swing, JavaFX & SWT 5
S JTextPane - markierten Text Formatieren AWT, Swing, JavaFX & SWT 11
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
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
O Swing Xml highlightning mit JTextPane und Regular expressions AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben