open example ejemplo definicion java html swing jeditorpane

java - example - ¿JEditorPane tiene problemas de Charset al mostrar HTML?



open file swing java (2)

Tengo el siguiente código:

import javax.swing.JEditorPane; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; public class ScratchPad { public static void main(String args[]) throws Exception { String html ="<html>"+ "<head>"+ "<meta http-equiv=/"Content-Type/" content=/"text/html; charset=ISO-8859-1/"/>"+ // this is the problem right here "<title>Error 400 BAD_REQUEST</title>"+ "</head>"+ "<body>"+ "<h2>HTTP ERROR: 400</h2><pre>BAD_REQUEST</pre>"+ "<p>RequestURI=null</p>"+ "<p><i><small><a href=/"http://jetty.mortbay.org/">Powered by jetty://</a></small></i></p>"+ "</body>"+ "</html>"; JFrame f = new JFrame(); JEditorPane editor = new JEditorPane(); editor.setEditable( false ); editor.getDocument().putProperty( "Ignore-Charset", "true" ); // this line makes no difference either way editor.setContentType( "text/html" ); editor.setText( html ); f.add( new JScrollPane(editor, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER) ); f.pack(); f.setVisible( true ); } }

Si lo ejecuta, notará que el marco está en blanco. Sin embargo, si elimino el "; charset = ISO-8859-1" de la metaetiqueta, aparece el HTML. Alguna idea de por qué y qué puedo hacer para evitar esto (aparte de hackear manualmente la cadena HTML sobre la cual no tengo control ...).

Edit # 1 - putProperty ("Ignore-Charset", "true") no hace ninguna diferencia desafortunadamente.


Cuando ejecuto el código, solo puedo ver el texto HTML cuando elimino la meta línea. Tal vez tiene algo que ver con la configuración de caracteres del sistema en el que se ejecuta.


Use la línea siguiente antes de setText y después de setContentType.

editor.getDocument().putProperty("IgnoreCharsetDirective", Boolean.TRUE);

Esta es una de las características místicas indocumentadas. setContentType crea un nuevo documento que no tiene efecto si lo configuraste antes.