textPane X Style

    protected static String append(String msg) {
    	String mensagemFormatada = null; 
    	SimpleAttributeSet attrs = new SimpleAttributeSet();
    	 StyleConstants.setForeground(attrs, Color.red);
    	 StyleConstants.setItalic(attrs, true);
    	 StyleConstants.setBold(attrs, true);
         Document doc = textAreaConsole.getDocument();
         msg += "\n";
        try {
        	
           doc.insertString(doc.getLength(), msg, attrs);
           
        } catch (BadLocationException ex) { ex.printStackTrace(); }
		return mensagemFormatada;
     }
    
    
    public static void lerMensagensConsole() {
    	String mensagem = MensagensConsole.getMensagens();
    	if(mensagem.contains("Problema")) {
    		textAreaConsole.setText(append(mensagem));
    	}
    	textAreaConsole.setText(textAreaConsole.getText() + "\n" + mensagem);
       	textAreaConsole.setCaretPosition(textAreaConsole.getDocument().getLength());
    	
    	

    }

o metodo lerMensagens recebe a mensagem de uma classe e verifica se ela tem a palvra “erro”. Se tiver, ela é formtada e exibida de novo…o problema é que ela é exibida de novo só que não é formatada!

alguem pode me ajudar?

Use getStyledDocument() do seu JTextPane ao invés do getDocument().

não resolveu…continua imprimindo tudo em preto e do mesmo jeito rs

Deve estar faltando vc adicionar o Style em seu JTextPane.


protected static String append(String msg) {
     	String mensagemFormatada = null; 

     	 Style style = textAreaConsole.addStyle(name, null)
     	 StyleConstants.setForeground(style , Color.red);
     	 StyleConstants.setItalic(style , true);
     	 StyleConstants.setBold(style , true);
          Document doc = textAreaConsole.getDocument();
          msg += "\n";
         try {
         	
            doc.insertString(doc.getLength(), msg, style );
            
         } catch (BadLocationException ex) { ex.printStackTrace(); }
 		return mensagemFormatada;
      }

ele imprime em vermelho agora, mas acaba apagando o que está em vermelho e o restante da tela…só mostra as novas mensagens,…e quando chega uma em vermelho, acontece a mesma coisa…sabe o q pode ser?

quando ele sai do metodo lerMensagensConsole(), ele apaga o que estava na tela…

e quando eu mudo os metodos para


    private static void append(String msg) {
      	
        Document doc = textAreaConsole.getDocument();
        Style style = textAreaConsole.addStyle("style", null);
     	StyleConstants.setForeground(style , Color.red);
     	StyleConstants.setItalic(style , true);
     	StyleConstants.setBold(style , true);
        try 
        {
        	doc.insertString(doc.getLength(), msg, style );
             
        } catch (BadLocationException ex) { ex.printStackTrace(); }
  		
    }
    
    
    public static void lerMensagensConsole() {
    	String mensagem = MensagensConsole.getMensagens();
    	if(mensagem.contains("Problema")) {
    		append(mensagem);  		
    	} else {
    		textAreaConsole.setText(textAreaConsole.getText() + "\n" + mensagem);
           	textAreaConsole.setCaretPosition(textAreaConsole.getDocument().getLength());
    	}
    	
    }

A mensagem é impressa normalmente, mas perde o vermelho e volta a ser a cor padrão

problema resolvido…o que faltava era um Style para quando não fosse imprimir em vermelhor :smiley:

vlw pela ajuda Ang