Texto com cor

3 respostas
Leandro_Rangel_Santo

alquem sabe como eu coloco um texto colorido num JTextArea ?

3 Respostas

Ironlynx

Uma única cor ou múltiplas cores?
Com uma única cor vc pode usar um setForeground() ;
se vc precisar de um texto multicolorido,acho q com JTextArea não dá…
…pois só suporta um único tipo de fonte/cor de texto!
Use um JEditorPane ou JTextPane q vc obterá bons resultados! :wink:

dica: Displaying Text In Multiple Styles
http://developer.java.sun.com/developer/JDCTechTips/2002/tt0821.html

I

Teste:

import java.awt.<em>;

import javax.swing.</em>;

import javax.swing.text.*;

public class Multi {
public static void main(String args[]) {

JFrame frame = new JFrame("Multiplas cores no texto");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = frame.getContentPane();
JTextPane pane = new JTextPane();
JScrollPane scrollPane = new JScrollPane(pane);
content.add(scrollPane, BorderLayout.CENTER);



// Inserindo palavras com cores  
insertWordColor(pane,"teste",Color.RED);
insertWordColor(pane,"teste",Color.BLUE);
insertWordColor(pane,"teste",Color.darkGray);
insertWordColor(pane,"teste",Color.ORANGE);

insertWordColor(pane,"teste",Color.LIGHT_GRAY);
insertWordColor(pane,"teste",Color.PINK);
insertWordColor(pane,"teste",Color.RED);
insertWordColor(pane,"teste"+"

",Color.BLUE);
// “
” para pular para próxima linha

// Inserindo palavras sem cor
insertWord(pane,"Estou testando sem cor"+"

");

// Inserindo palavras com um estilo definido

// Definindo o estilo de impressao
SimpleAttributeSet set = new SimpleAttributeSet();
StyleConstants.setItalic(set, true);
StyleConstants.setForeground(set, Color.BLACK);
StyleConstants.setBackground(set, Color.YELLOW);

// Inserindo palavra com estilo definido 
insertStyleWord(pane, "Testando com um style set", set);

frame.setSize(300, 200);
frame.show();

}

// Método para inserir uma palavra ou texto sem cor (preto)
public static void insertWord(JTextPane pane, String palavra){

	SimpleAttributeSet set = new SimpleAttributeSet();
	//StyleConstants.setForeground(set, Color.BLACK);
	Document doc = pane.getStyledDocument();

	try {
		doc.insertString(doc.getLength()," "+palavra, set);

	} catch (BadLocationException e) {
		System.err.println("Bad location");
		return;
	}         

}

//  Método para inserir uma palavra ou texto com cor (preto)
public static void insertWordColor(JTextPane pane, String palavra,Color corword){
          
       SimpleAttributeSet set = new SimpleAttributeSet();
       StyleConstants.setForeground(set, corword);
       Document doc = pane.getStyledDocument();
          
        try {
          doc.insertString(doc.getLength()," "+palavra, set);
          StyleConstants.setForeground(set, Color.BLACK);
        } catch (BadLocationException e) {
          System.err.println("Bad location");
          return;
        }         
      
}

//  Método para inserir uma palavra ou texto usando style set
public static void insertStyleWord(JTextPane pane, String palavra, SimpleAttributeSet set){
      
   
    Document doc = pane.getStyledDocument();
    try {
      doc.insertString(doc.getLength()," "+palavra, set);
      StyleConstants.setForeground(set, Color.BLACK);
    } catch (BadLocationException e) {
      System.err.println("Bad location");
      return;
    }         
 
 }

}
:lol:

I

Para ficar melhor, sobrecarreguei os métodos ( o que dá na mesma no final):

import java.awt.<em>;

import javax.swing.</em>;

import javax.swing.text.*;

public class Multi {
public static void main(String args[]) {

JFrame frame = new JFrame("Multiplas cores no texto");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = frame.getContentPane();
JTextPane pane = new JTextPane();
JScrollPane scrollPane = new JScrollPane(pane);
content.add(scrollPane, BorderLayout.CENTER);



// Inserindo palavras com cores  
insertWord(pane,"teste",Color.RED);
insertWord(pane,"teste",Color.BLUE);
insertWord(pane,"teste",Color.darkGray);
insertWord(pane,"teste",Color.ORANGE);

insertWord(pane,"teste",Color.LIGHT_GRAY);
insertWord(pane,"teste",Color.PINK);
insertWord(pane,"teste",Color.RED);
insertWord(pane,"teste"+"

",Color.BLUE);
// “
” para pular para próxima linha

// Inserindo palavras sem cor
insertWord(pane,"Estou testando sem cor"+"

");

// Inserindo palavras com um estilo definido

// Definindo o estilo de impressao
SimpleAttributeSet set = new SimpleAttributeSet();
StyleConstants.setItalic(set, true);
StyleConstants.setForeground(set, Color.BLACK);
StyleConstants.setBackground(set, Color.YELLOW);

// Inserindo palavra com estilo definido 
insertWord(pane, "Testando com um style set", set);

frame.setSize(300, 200);
frame.show();

}

// Método para inserir uma palavra ou texto sem cor (preto)
public static void insertWord(JTextPane pane, String palavra){

	SimpleAttributeSet set = new SimpleAttributeSet();
	//StyleConstants.setForeground(set, Color.BLACK);
	Document doc = pane.getStyledDocument();

	try {
		doc.insertString(doc.getLength()," "+palavra, set);

	} catch (BadLocationException e) {
		System.err.println("Bad location");
		return;
	}         

}

//  Método para inserir uma palavra ou texto com cor (preto)
public static void insertWord(JTextPane pane, String palavra,Color corword){
          
       SimpleAttributeSet set = new SimpleAttributeSet();
       StyleConstants.setForeground(set, corword);
       Document doc = pane.getStyledDocument();
          
        try {
          doc.insertString(doc.getLength()," "+palavra, set);
          StyleConstants.setForeground(set, Color.BLACK);
        } catch (BadLocationException e) {
          System.err.println("Bad location");
          return;
        }         
      
}

//  Método para inserir uma palavra ou texto usando style set
public static void insertWord(JTextPane pane, String palavra, SimpleAttributeSet set){
      
   
    Document doc = pane.getStyledDocument();
    try {
      doc.insertString(doc.getLength()," "+palavra, set);
      StyleConstants.setForeground(set, Color.BLACK);
    } catch (BadLocationException e) {
      System.err.println("Bad location");
      return;
    }         
 
 }

}

Criado 3 de outubro de 2003
Ultima resposta 6 de set. de 2004
Respostas 3
Participantes 3