Pues ya tengo mi código de resaltado de código en fase 1!!!
Para este primer caso, únicamente buscamos una cadena "bu" la cual resaltar.
String n = evt.getKeyChar()+"";
if (n.equals(" ") || n.equals("\n"))
{
if (((s.substring(ini, txtEdicion.getCaretPosition()).trim()).equals("bu")))
{
color = sc.addStyle("ConstantWidth",null);
StyleConstants.setForeground(color, Color.red);
doc.setCharacterAttributes(ini, txtEdicion.getCaretPosition(), color, false);
}
else
{
color = sc.addStyle("ConstantWidth",null);
StyleConstants.setForeground(color, Color.black);
doc.setCharacterAttributes(ini, txtEdicion.getCaretPosition(), color, false);
}
ini = txtEdicion.getCaretPosition();
}
Buscamos carácter de inicio, carácter de final, si coincide con "bu" lo marcamos de rojo.
Esto, en la fase 2, será en lugar de una simple cadena, un array de ellas con algún tipo de datos que se ajuste a su fin... estoy pensando en árboles...
Veremos qué tal :)
EDITO: refinando el código
String s = txtEdicion.getText();
String n = evt.getKeyChar()+"";
color = sc.addStyle("ConstantWidth",null);
StyleConstants.setForeground(color, Color.black);
if (n.equals(" ") || n.equals("\n"))
{
if ((a.contains((s.substring(ini, txtEdicion.getCaretPosition()).trim()))))
{
color = sc.addStyle("ConstantWidth",null);
StyleConstants.setForeground(color, Color.blue);
doc.setCharacterAttributes(ini, txtEdicion.getCaretPosition(), color, false);
}
ini = txtEdicion.getCaretPosition();
}
De vez en cuando devuelve alguna excepción que tengo que terminar de controlar, y ahora ya está buscando en un arraylist. Es un principio.
Pues... la mejora... no es como tal una mejora... sólo lo hace más bonito y en algunos casos incluso trabaja mas :P
ResponderEliminar