Ayuda para un editor de textos en Java
Tengo problemas al pintar una palabra recervada en un JTextPane
Lo que hago es:
String palabraR = "Hola";
int longitud = palabraR.length();
int iniciall = editor.getText().indexOf(palabraR);
int finall = inicial + palabraR.length();
int longitud = palabraR.length();
int iniciall = editor.getText().indexOf(palabraR);
int finall = inicial + palabraR.length();
editor.setText(editor.getText().substring(0, inciall)+"<font color='green'>"+editor.getText().substring(inciall, finall)+"</font> "+editor.getText().substring(finall, editor.getText().length()));
Pero solo pinta la primera coincidencia, y quisiera que me ayuden a que pinten todas las coincidencias
- AdrianGM's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
Re: pintar una palabra 'recervada'
Tal vez quieras utilizar
javax.swing.JEditorPane
:String txt = "¡Hola!, ¿cómo estás? ¡Hola!, ¿qué hay?";
txt = txt.replaceAll("(Hola)", "<b>$1</b>");
JOptionPane.showMessageDialog(null, new JEditorPane("text/html", txt));
}
~~~
Cheveres!!
No es lo que buscaba esxactamente pero me servirá de mucho amigo. Gracias!!!
Pues hazlo para todas las
Pues hazlo para todas las ocurrencias, en tu código dices:
- Toma la primera ocurrencia de la palabra
- Mide su longitud
- Reemplaza desde donde empieza hasta donde acaba con este texto <font> etc. etc.
Para que lo haga con el resto ponlo en un bucle ( for / white )
Hay una versión del método
indexOf
que recibe como parametro desde donde empezar para que busques después de donde ya cambiaste el textoAlgo como:
String word = "hola";
int last = 0;
String ftb = "<font color='green'>";
String fte = "</font>";
int end = 0;
for ( int i = text.indexOf(word) ; i != -1 ; i = text.indexOf(word, i) ) {
end = i+word.length();
text = text.substring( last, i ) +ftb+ text.substring( i, end) + fte +text.substring(end);
last = end;
}
editor.setText(text);
Así en la siguiente vuelta estás buscando a partir de en fin de la palabra anterior.
http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#indexOf-i...
font color='green'
¡Ah! En ese caso:
String txt = "¡Hola!, ¿cómo estás? ¡Hola!, ¿qué hay?";
txt = txt.replaceAll("(Hola)", "<font color='green'>$1</font>");
JOptionPane.showMessageDialog(null, new JEditorPane("text/html", txt));
}
~~~
Oscar cool.
Es eso mismo lo que buscaba buscaba. Muchas gracias. Estoy con un proyecto de algo parecido a un lenguaje Resuelve operaciones matematicas basicas y algunas complejas. Pero tambien me cuesta eso del analizador sintactico, haber si aprobechan y me dan una mano en eso tbien