alquem sabe como eu coloco um texto colorido num JTextArea ?
Texto com cor
3 Respostas
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! 
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