2012-02-04 64 views
13

Básicamente, tengo un JTextPane para contener el texto que deseo dar estilo. JTextArea hubiera sido mejor para mí, ¿pero me han dicho que no puedes darle un estilo al texto?Diseñar texto en un JTextArea o JTextPane

Sin embargo, el JTextPane no parece estilizar correctamente. Por ejemplo, el siguiente código se acaba de regresar con el código HTML incluido:

public static void main(String[] args) { 
    JFrame j = new JFrame("Hello!"); 
    j.setSize(200,200); 
    JTextPane k = new JTextPane(); 
    k.setText("<html><strong>Hey!</strong></html>"); 
    j.add(k); 
    j.setVisible(true); 
} 

Quiero ser capaz de simplemente el estilo de un texto en un JTextPane cuando un usuario interactúa con la interfaz, pero hasta el momento, sólo se devuelve el cadena con el HTML todavía en! ¡Ayuda!

Respuesta

6

Haga saber a Java que será HTML utilizando el método setContentType.

k.setContentType("text/html"); 
3

Puedo usar un aspecto y el estilo (de fondo) o llamando setContentType("text/html") tiene problemas con la fuente que se muestra. Lo resuelto llamando:

textPane.putClientProperty(JTextPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE); 

Otra opción es envolver el texto HTML en un JLabel. Siguiendo su ejemplo, el código es:

JTextPane k = new JTextPane(); 
k.insertComponent(new JLabel("<html><strong>Hey!</strong></html>")); 
+0

usando 'JTextArea' es a menudo mejor que el uso de' 'JLabel' porque se desplaza JTextArea' mejor en un' JScrollPane' y permite al usuario seleccionar y copiar el texto. Gracias por la información sobre Substance Look and Feel. Lo uso también para que la propina sea útil. – Enwired

Cuestiones relacionadas