# JEditorPane, HTML EditorKit und HTMLDocument



## ChristianBr86 (27. Jul 2004)

Hallo.

Kann mir jemand sagen wie ich in einem JEditorPane einen mit HTML formatierten Text hinzufügen kann, OHNE den ganzen inhalt neu schreiben zu müssen?

Mit setText() direkt im JEditorPane wird alles in HTML dargestelt wenn ich aber über insertString() einen Text ins HTMLDocument einfüge werdne die HTML Tags angezeigt. Mit dem HTMLEditorKit bekomm ich gar keine anzeige hin.

Bei Google find ich auch alles, nur nichts was mir weiterhilft.

Hoffe ihr könnt mir helfen


----------



## Roar (28. Jul 2004)

ChristianBr86 hat gesagt.:
			
		

> wenn ich aber über insertString() einen Text ins HTMLDocument einfüge werdne die HTML Tags angezeigt.


? sicher dass du den text an die richtige stelle eingefügt hast? beachte: das </html> schlusstag muss ganz am ende stehen. und vorher solltest du noch per setContentType("text/html") den richtigen content type setzen. dann sollte das eigentlich gehen.


----------



## ChristianBr86 (28. Jul 2004)

```
JEditorPane editor = new JEditorPane();
this.setLayout(new BorderLayout());
this.add("Center", editor);
editor.setEditable(false);
editor.setContentType("text/html");
HTMLDocument doc = (HTMLDocument) editor.getDocument();
try
{
	doc.insertString(0,"<html><body>[b]test[i]test[/i][/b]</body></html>",null); 
}
```


Also so hab ich das... interessiert den aber auch nicht. Muss doch irgendwie möglich sein wäre ich ja nicht der erste wo sowas macht...


----------



## Roar (28. Jul 2004)

achso jetz versteh ich. du fügst den String is das dokument ein, dann musst du das Document der JEditorPane auch wieder zuweisen mit setDocument. einfacher wär es wohl wenn du direkt JEditorPane.insertString() benutzen würdest...


----------



## Beni (28. Jul 2004)

Nur gibt es keine Methode "JEditorPane.insertString"... (auch nicht in der Superklasse)  :wink:

Vielleicht hilft auch dieser Thread, der zweitletzte Post hat noch was zum HTMLDocument.


----------



## Roar (28. Jul 2004)

hab gedacht in JTextComponent wär das.. hmm.


----------



## ChristianBr86 (28. Jul 2004)

Habs gelesen...
Nur die Sache mit dem Element bekomm ich nicht hin.

Immerhin bin ich mal soweit das die .java kompiliert wird.... nur leider wird nichts angezeigt es sei den ich setzte es mit setText.


```
HTMLDocument doc = (HTMLDocument) editor.getDocument();
el = doc.getElement("????????");
try
{
	try
	{
		doc.setInnerHTML(el, "<html>[b]Test 2.040.495[/b]</html>");
		//editor.setDocument(doc);
	}
	catch(IOException e)
	{
		System.out.println("blabla");
	}
}
catch(BadLocationException e)
{
	System.out.println("blabla");
}
```

Was muss ich bei getElement eintragen? was IST eigentlich ein Element?. Schätze mal wenn das Stimmt dan läufts auch.
Bei Google find ich ja alles mögliche Fachgeplänkel... leider bin ich nicht vom Fach.


----------



## macfreakz (28. Jul 2004)

Das Root Element sollst du eingeben. 

Das "<HTML"> Element ist ein Root Element!

 :arrow: doc.getElement("html");


----------



## ChristianBr86 (28. Jul 2004)

Ein Element ist also ein HTML Tag?

Hab jetzt  getElement("html");

Ändert leider auch nichts.

Auch nicht wenn ich mit editor.setText("<html>");  einfüge.
Oder im Dokument:
doc.insertString(0,"<html>", null);


Beides füge ich VOR dem getElement() ein.

Mein kompletter Code:

```
Element el;
JEditorPane editor = new JEditorPane();
this.setLayout(new BorderLayout());
this.add("Center", editor);
editor.setEditable(false);
editor.setContentType("text/html");
HTMLDocument doc = (HTMLDocument) editor.getDocument();
el = doc.getElement("html");
try
{
	try
	{
		doc.setInnerHTML(el, "[b]Test[/b]");
	        editor.setDocument(doc);
	}
	catch(IOException e)
	{
		System.out.println("");
	}
}
catch(BadLocationException e)
{
	System.out.println("");
}
```


----------

