2011-02-27 17 views
12

Tengo una pregunta sobre una consola simple que estoy creando. Sé que es posible agregar contenido html a JTextPane con la función setText() con el anterior setContentType("text/html");. Pero para las necesidades de mi aplicación necesito trabajar directamente con javax.swing.text.Document, que obtengo con la función getDocument() (por ejemplo, para eliminar las líneas y anexar las nuevas, sí, es una especie de consola que estoy creando y Ya he visto varios ejemplos en las preguntas anteriores de StackOverflow, pero ninguno de ellos satisface mis necesidades). Entonces, lo que quiero es insertar el HTML en el documento y hacer que se represente correctamente en mi JTextPane. El problema es cuando agrego contenido HTML con el método insertString() (que pertenece al documento), JTextPane no lo muestra y en el resultado veo todas las etiquetas html. ¿Hay alguna forma de hacer que esto funcione correctamente?Agregar contenido HTML al documento asociado con JTextPane

Así es como inserto el texto:

text_panel = new JTextPane(); 
text_panel.setContentType("text/html"); 

//... 

Document document = text_panel.getDocument(); 
document.insertString(document.getLength(), line, null); 
text_panel.setCaretPosition(document.getLength()); 

Respuesta

26

es necesario insertar el uso de un HTMLEditorKit.

JTextPane text_panel = new JTextPane(); 
    HTMLEditorKit kit = new HTMLEditorKit(); 
    HTMLDocument doc = new HTMLDocument(); 
    text_panel.setEditorKit(kit); 
    text_panel.setDocument(doc); 
    kit.insertHTML(doc, doc.getLength(), "<b>hello", 0, 0, HTML.Tag.B); 
    kit.insertHTML(doc, doc.getLength(), "<font color='red'><u>world</u></font>", 0, 0, null); 
+1

Gracias, esto es lo que necesitaba;) – Serhiy

+0

¡Gracias! Esto funcionó perfectamente. – Qix

+1

Estaba buscando esto y me ayudó, muchas gracias, pero, para hipervínculos, la representación de la interfaz de usuario para mostrar el texto en azul al pasar el cursor y subrayar no sucedió. Alguna ayuda – Kiran

Cuestiones relacionadas