*Markus: JEditorPane bleibt von setFont unbeeindruckt?

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

  1. 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

    1. 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

      1. 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

        1. Hallo,

          danke für die Info.

          Markus