EditorPane mit CSS

tomkruse

Erfahrenes Mitglied
Hi!

Ich möchte einen kleinen Editor programmieren, bei dem man einfache Formatierungen (Schriftgrad, Schrftfarbe etc.) vornehmen kann. Soweit ich das bis jetzt herausgefunden habe, kann man das recht gut mit HTML lösen, da die EditorPane HTML versteht. Jetzt hätte ich da aber gerne CSS drinnen und das ist auch irgendwie möglich. Bis jetzt hab ich aber noch nicht rausgefunden wie das genau geht. Hat jemand von Euch vielleicht Erfahrung damit? Links mit Beispielen zu dem Thema würde mir auch weiterhelfen. (habe eh schon gegoogelt aber so recht was Brauchbares war bis jetzt nicht dabei).

Danke schonmal im Voraus

Tom.
 
Hallo,

du mußt nur den ContentType der EditorPane auf "text/html" setzen und dann den HTML Code übergeben. Der Rest gehört dann in die Schublade HTML/CSS, dafür gibt's z.B. bei SelfHTML ein eigenes Kapitel (http://selfhtml.teamone.de/css/index.htm)

hier mal ein kleines Beispiel:
Code:
import javax.swing.*;

public class CSSTest
{
    public static void main(String args[])
    {
        JFrame f = new JFrame();
        
        
        StringBuffer code = new StringBuffer();
        code.append("<html>");
        code.append("<head>");
        code.append("<style type='text/css'>");
        code.append("<!--");
        code.append("p.rot { color:#ff0000; }");
        code.append("p.blau { color:#0000ff; }");
        code.append("p.gross { font-size:25pt; }");
        code.append("-->");
        code.append("</style>");
        code.append("</head>");
        code.append("<body>");
        code.append("<p class='rot'>Rote Schrift</p>");
        code.append("<p class='blau'>Blaue Schrift</p>");
        code.append("<p class='gross'>Gro&szlig;e Schrift</p>");
        code.append("</body>");
        code.append("</html>");
        
        JEditorPane ep = new JEditorPane("text/html",code.toString());
        
        f.getContentPane().add(ep);
        f.pack();
        f.show();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

gruß
sDroid
 
Hi!

Danke schonmal für die Info!

Ich habe jetzt folgendes probiert:
Code:
   private JTextPane pane;
   HTMLEditorKit kit = new HTMLEditorKit();
   HTMLDocument doc=(HTMLDocument)kit.createDefaultDocument();
   StyleSheet styles=doc.getStyleSheet();

   try {
      styles.importStyleSheet(new URL("file:///C:/Work/nba/test/styles.css"));
      }
   catch(Exception e) {
      e.printStackTrace();
      }
   kit.install(pane);
   pane.setEditorKit(kit);
   pane.setText(Ein Wort in<span class=\"rot\">rot</span>";

Nur scheint die Definition für "rot" keinen Effekt zu haben. Also das Wort ist nicht rot :rolleyes:

Die Frage ist nun: warum? Das Dokument styles.css ist vorhanden und die Styles werden auch geladen (habe ich mir ausgeben lassen - alles da). Ist das Verwenden von Styles so wie ich mir das vorgestellt habe und wie man es von HTML gewohnt ist nicht möglich oder habe ich einen anderen Fehler gemacht?

Viele Grüße

Tom.
 
Hi!

Ich nochmal :)

Also mittlerweile bin ich schon ein paar entscheidende Schritte weitergekommen und man kann den Effekt der Styles auch schon im Text sehen.

Jetzt hab ich allerdings das Problem, wie ich den Text samt den HTML-Tags wieder als String rausbekomme. Geht das irgendwie? Muß ja möglich sein, denn welchen Sinn hätte das Ganze sonst? :rolleyes:


Cu - Tom.
 
Ok, habs selber rausgefunden :)

Code:
private String getHTMLText() {

   CharArrayWriter caw = new CharArrayWriter();
   HTMLDocument doc=(HTMLDocument)pane.getDocument();
   try {
       kit.write(caw,doc,0,doc.getLength());
       }
   catch(Exception e) {
       e.printStackTrace();
       }
   return(caw.toString());
   }

Für alle, die das Thema interessiert habe ich hier noch einen Interessanten Link:

Ekit ist ein OpenSource HTML-Editor in Java, der auch als Applet funktioniert. Sieht wirklich gut aus und der Source ist sehr verständlich und übersichtlich (nicht so wie meiner :) )

Cu - Tom.
 

Neue Beiträge

Zurück