JEditorPane bleibt grau?

Maik20

Erfahrenes Mitglied
Hallo zusammen,

ich setze wie folgt einen HTML-Text auf einen JEditorPane:

Code:
htmlPane.setContentType("text/html");
htmlPane.setText(quellcode.toString());
setVisible(true);

Das JFrame wird auch sichtbar, allerdings bleibt der JEditorPane grau. Ich habe im Quellcode einfach mal die Seite von google hinterlegt. Mache ich hier was falsch?
 
Hi,

also bei mir funktioniert das so:

Java:
	       String quellcode="<h3>TEST</h3>";

		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JEditorPane htmlPane = new JEditorPane();
		htmlPane.setContentType("text/html");
		htmlPane.setText(quellcode.toString());
		frame.getContentPane().add(htmlPane);
		frame.pack();
		frame.setVisible(true);

Gruß
joschi
 
Hallo Joschi,

hast recht. Mit diesem "simplen" HTML-Konstrukt klappt es perfekt. Aber versuch mal bitte z.B. den Quellcode der google.de Seite reinzuschreiben. Das klappt leider nicht.

Ciao

Maik
 
Hi Maik,

hast Recht, mit Google funktioniert es leider nicht.
Liegt vermutlich am HTMLEditorKit, das ist nicht so toll, was das Rendern von HTML Seiten angeht.
Sorry, dann kann ich Dir leider auch nicht weiterhelfen :(

Gruß
joschi
 
Hi Maik,

habs mir nochmal angeschaut.
Der Parser des HTMLEditorKit scheint mit den <meta> Tags nicht zurecht zu kommen und wirft eine Exception: javax.swing.text.ChangedCharSetException.

Nimmt man die <meta> Tags raus, wird die Seite wenigstens gerendert. Ist aber immer noch nicht schön.

Java:
        HTMLDocument html = new HTMLDocument();
    	HTMLEditorKit kit = new HTMLEditorKit();
    	URL url = new URL("http://www.google.de/");
        html.setBase(url);
    	kit.read(removeMetaTags(url.openStream()), html, 0);
    	JFrame frame = new JFrame();

    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	JEditorPane htmlPane = new JEditorPane();
    	htmlPane.setContentType("text/html");
    	htmlPane.setDocument(html);

    	frame.getContentPane().add(htmlPane);
    	frame.pack();
    	frame.setVisible(true);

/* --------------------------------------------- */

    private InputStream removeMetaTags(InputStream in) throws IOException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();

        BufferedReader br = new BufferedReader(new InputStreamReader(in));
        String line;
        while ((line = br.readLine()) != null) {
        	line = line.toLowerCase().replaceAll("<meta .*?>", "");
          bos.write((line + "\n").getBytes());
        }
        br.close();

        return new ByteArrayInputStream( bos.toByteArray());
      }


Gruß
joschi
 
Zuletzt bearbeitet:
Zurück