JTextPane
Buenas
Tengo una lista de caracteres por ejemplo {111vvv2v2r121r} y quiero sacar esta lista en un JtextPane, cada caracter con un color diferente. lo he implementado asi:
public void setResultadoClasificacion(ArrayList<Character> resultado) {
this.panelResultado.removeAll();
rojo= Color.red;
verde=Color.green;
azul= Color.blue;
// creamos la clase StyleContext en la que nos apoyaremos
StyleContext sc = new StyleContext();
// primer tipo de estilo... color rojo
Style estiloRojo = sc.addStyle(null, null);
StyleConstants.setForeground(estiloRojo, rojo);
StyleConstants.setFontFamily(estiloRojo, "Helvetica");
StyleConstants.setFontSize(estiloRojo, 14);
// para el negro
Style estiloVerde = sc.addStyle(null, null);
StyleConstants.setForeground(estiloVerde, verde);
// para el azul
Style estiloAzul = sc.addStyle(null, null);
StyleConstants.setForeground(estiloAzul, azul);
// creamos el StyledDocument pasandole la clase
// StyleContext que hemos creado antes...
DefaultStyledDocument doc = new DefaultStyledDocument(sc);
// y por fin tenemos ya creado el JTextPane con el
// StyledDocument asociado que le pasamos
JTextPane texto = new JTextPane(doc);
texto.setEditable(false);
this.panelResultado.add(texto);
for (int i=0; i<resultado.size();i++){
if ( resultado.get(i).toString()== String.valueOf('2')){
try {
doc.insertString(texto.getCaretPosition(),resultado.get(i).toString() , estiloRojo);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if ( resultado.get(i).toString()== String.valueOf('r')){
try {
doc.insertString(texto.getCaretPosition(),resultado.get(i).toString() , estiloVerde);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if ( resultado.get(i).toString()== String.valueOf('1')){
try {
doc.insertString(texto.getCaretPosition(),resultado.get(i).toString() , estiloAzul);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
this.paintAll(this.getGraphics());
}
el resultado k obtengo es una pantalla vacia, no me sale ni un caracter, no se pk puede ser, a ver si me puede echar alguin una ayuda.
Gracias
Tengo una lista de caracteres por ejemplo {111vvv2v2r121r} y quiero sacar esta lista en un JtextPane, cada caracter con un color diferente. lo he implementado asi:
public void setResultadoClasificacion(ArrayList<Character> resultado) {
this.panelResultado.removeAll();
rojo= Color.red;
verde=Color.green;
azul= Color.blue;
// creamos la clase StyleContext en la que nos apoyaremos
StyleContext sc = new StyleContext();
// primer tipo de estilo... color rojo
Style estiloRojo = sc.addStyle(null, null);
StyleConstants.setForeground(estiloRojo, rojo);
StyleConstants.setFontFamily(estiloRojo, "Helvetica");
StyleConstants.setFontSize(estiloRojo, 14);
// para el negro
Style estiloVerde = sc.addStyle(null, null);
StyleConstants.setForeground(estiloVerde, verde);
// para el azul
Style estiloAzul = sc.addStyle(null, null);
StyleConstants.setForeground(estiloAzul, azul);
// creamos el StyledDocument pasandole la clase
// StyleContext que hemos creado antes...
DefaultStyledDocument doc = new DefaultStyledDocument(sc);
// y por fin tenemos ya creado el JTextPane con el
// StyledDocument asociado que le pasamos
JTextPane texto = new JTextPane(doc);
texto.setEditable(false);
this.panelResultado.add(texto);
for (int i=0; i<resultado.size();i++){
if ( resultado.get(i).toString()== String.valueOf('2')){
try {
doc.insertString(texto.getCaretPosition(),resultado.get(i).toString() , estiloRojo);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if ( resultado.get(i).toString()== String.valueOf('r')){
try {
doc.insertString(texto.getCaretPosition(),resultado.get(i).toString() , estiloVerde);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if ( resultado.get(i).toString()== String.valueOf('1')){
try {
doc.insertString(texto.getCaretPosition(),resultado.get(i).toString() , estiloAzul);
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
this.paintAll(this.getGraphics());
}
el resultado k obtengo es una pantalla vacia, no me sale ni un caracter, no se pk puede ser, a ver si me puede echar alguin una ayuda.
Gracias