JEditorPane bleibt von setFont unbeeindruckt?
*Markus
- java
0 Axel Richter0 *Markus1 Axel Richter0 *Markus
Hallo,
folgender Abschnitt aus einer Methode:
jeditorpane = new JEditorPane();
jeditorpane.setContentType("text/html");
jeditorpane.setBackground(new Color(241, 246, 255));
jeditorpane.setFont(new Font("Arial", Font.PLAIN, 11));
jeditorpane.setEditable(false);
if (ausgabedaten != null)
jeditorpane.setText(ausgabedaten.toString().replaceAll(System.getProperty("line.separator"), "<br>"));
Die JEditorPane akzeptiert alle Angaben, bis auf setFont. Der Text bleibt nämlich unverändert. Der Font ist jedenfalls vorhanden, da ich "Arial" in einem JLabel schon problemlos verwende. "ausgabedaten" ist übrigens ein Stringbuffer, aber wird, wie man sehen kann, mit der toString-Methode zu einem String konvertiert, was auch nicht die Ursache sein sollte.
Was läuft hier aber falsch?
Markus
Hallo,
Die JEditorPane akzeptiert alle Angaben, bis auf setFont.
Wie soll ein HTMLEditorKit mit setFont umgehen? Probier es mal so:
jeditorpane = new JEditorPane();
jeditorpane.setContentType("text/html");
jeditorpane.setBackground(new Color(241, 246, 255));
//jeditorpane.setFont(new Font("Arial", Font.PLAIN, 11));
StyleSheet css = ((HTMLEditorKit)jeditorpane.getEditorKit()).getStyleSheet();
css.addRule("P { margin : 0; font-family : Arial, sans-serif; font-size : 11px; font-style : normal; }");
jeditorpane.setEditable(false);
if (ausgabedaten != null)
jeditorpane.setText("<P>" + ausgabedaten.toString().replaceAll(System.getProperty("line.separator"), "<br>") + "</P>");
viele Grüße
Axel
Hallo,
danke, so hat es geklappt. Darauf wäre ich sowieso nicht gekommen, denn wieso wird der Hintergrund mit setBackground gesetzt, die Schrift jedoch mit einem extra erstellten Stylesheet?
Markus
Hallo,
danke, so hat es geklappt. Darauf wäre ich sowieso nicht gekommen, denn wieso wird der Hintergrund mit setBackground gesetzt, die Schrift jedoch mit einem extra erstellten Stylesheet?
[JEditorPane].setBackground setzt den Hintergrund der pane (Glasscheibe) auf der dann das StyledDocument HTMLDocument dargestellt wird. Solange das Root-Element des Documents transparent ist, sieht man den Hintergrund der pane durch. [JEditorPane].setFont setzt den font der pane, also solcher Texte, die direkt auf die pane geschrieben werden. Dein Text steht aber in einem HTMLDocument, welches über ein HTMLEditorKit bearbeitet werden kann. Dieses EditorKit kann mit setFont nicht umgehen, weil nicht klar ist, für welches HTML-Element (HTML, BODY, P, H1 ...) das setFont gelten soll.
Du kannst übrigens auch das setBackground durch
...
css.addRule("BODY { background-color: #F1F6FF; }");
...
ersetzen. Eventuell kann auch der Selector HTML verwendet werden (ausprobieren! ;-)).
viele Grüße
Axel