Swing JEditorPane mit HTMLDocument - Text hinzufügen

peppermint

Mitglied
Hi,

ich find den Fehler in meinem Prog nicht. Hoff, ihr könnt mir helfen.
Ich hab eine JEditorPane mit einem HTMLDocument. Wenn ich nun Text zu der JEditorPane über das HTMLEditorKit hinzufügen möchte, passiert nichts :-(

Ich hab das ganze mal in eine kleine ausführbare Testklasse gepackt:

Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;

public class Test {
	
	private JTextPane textPane;
	private HTMLEditorKit ekit;
	private HTMLDocument edoc;
	private JScrollPane scrollPane;

	Test() {
		JFrame frame = new JFrame();
		frame.setLayout(new BorderLayout());
		frame.setSize(500, 500);
		frame.setVisible(true);
		
		ekit = new HTMLEditorKit();
		
		textPane = new JTextPane();
		textPane.setBackground(Color.BLUE);
		textPane.setEditorKit(ekit);
		
		edoc = (HTMLDocument) ekit.createDefaultDocument();
		
		textPane.setDocument(edoc);

		textPane.setEditable(false);
		textPane.setContentType("text/html");
		
		scrollPane = new JScrollPane(textPane);
		scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		scrollPane.setPreferredSize(new Dimension(500, 500));
		frame.add(scrollPane, BorderLayout.CENTER);

		scrollPane.setVisible(true);
		
		frame.pack();
		
		fillWithTestdata();

	}
	
	private void fillWithTestdata() {
		String content = "Testdaten";
		for(int i = 1; i < 10 ; i++) {
			try {
				ekit.insertHTML(edoc, edoc.getLength(), content + i, 0, 0, HTML.Tag.B);
			} catch (Exception e) {
				e.printStackTrace();
			} 
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new Test();
	}
}

Nach meinem Verständnis müsste die Methode fillWithTestdata() doch Text in die JTextPane schreiben...
Es erscheint jedoch kein Text in der GUI. Auch beim debuggen passiert nichts - mit nem BreakPoint nach dem insertHTML bekomme ich für textPane.getText() immer nur das leere HTML-Document fragement - also ohne den TestText.
 
hmm.. ich muss zugeben, ich kenne diese ganzen HTMLEditorKit und HTMLDocument und sowas nicht (also ist mein post hier vielleicht nicht wirklich hilfreich, sorry), aber bei mir funktionierts, wenn ich statt

[JAVA=56]ekit.insertHTML(edoc, edoc.getLength(), content + i, 0, 0, HTML.Tag.B);[/code]

das hier mache:

[JAVA=56]ekit.insertHTML(edoc, edoc.getLength(), content + i, 0, 0, null);[/code]

klar, dann ist es nicht mehr fett, aber immerhin kannst du dann was ausgeben.

mfg
 
Danke für deine Hilfe - so funktioniert nun zumindest die Anzeige.

Aber gibt es auch eine Möglichkeit, wie ich den Attributes-Parameter mit nutzen kann, also wenn ich z.B HTML.Tag.B hinzufügen kann...?
 

Zurück
Oben