06 febrero, 2012

Agregar Texto en color a un JTextPane

De vez en cuando se me ha hecho necesario utilizar un JTextPane para entregar mensajes al usuario conforme se realiza una tarea. Por lo mismo es muy importante que el usuario pueda detectar rápidamente mensajes de error y que mejor para esto que utilizar colores en el texto. Los mensajes normales pueden ir en negro, los mensajes de error en rojo, etc.



Para ello se puede utilizar la clase StyledDocument de Java que permite definir algunas caracteristicas del texto que se insertará en el JTextPane


Sin más, he decidido crear una clase que extienda de JTextPane y que proporcione los métodos que necesito:



public class Consola extends JTextPane {



    public void append(Color color, String texto) {
        StyledDocument doc = getStyledDocument();
        Style syle = doc.addStyle("txt", null);
        StyleConstants.setForeground(syle, color);
        try {
             doc.insertString(doc.getLength(), texto, syle);
             setCaretPosition(doc.getLength());
         } catch (BadLocationException ex) {
             ex.printStackTrace();
         }
    }



    public void appendRed(String texto) {
        append(Color.RED, texto);
    }


    public void append(String texto) {
        append(Color.BLACK, texto);
    }


}



Una solución simple que puede ser de gran utilidad. Jugando un poco con las clases StyledDocument, Style y StyleConstants pueden obtenerse resultados muy interesantes.





bytes!

No hay comentarios.: