insertar - scrollbar java
JTextPane resaltar texto (5)
¿Puedo resaltar algo de texto en un JTextPane
comenzando desde un valor y terminando desde otro valor como el siguiente pero con el color amarillo?
"" Texto destacado JTextPane ""
Gracias.
Como a menudo hay varias posibilidades, dependiendo de lo que realmente quiere decir con "resaltar" :-)
Destaque cambiando los atributos de estilo de las partes de texto arbitrarias en el nivel del documento, algo así como
SimpleAttributeSet sas = new SimpleAttributeSet();
StyleConstants.setForeground(sas, Color.YELLOW);
doc.setCharacterAttributes(start, length, sas, false);
Resalte a través de un Resaltador en el nivel de textoPanel:
DefaultHighlighter.DefaultHighlightPainter highlightPainter =
new DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW);
textPane.getHighlighter().addHighlight(startPos, endPos,
highlightPainter);
Sí, puede hacerlo a través de las funciones setSelectionStart y setSelectionEnd de JTextComponent del que JTextPane hereda.
¿Has probado el método de comparación de cadenas de Java?
.equalsIgnoreCase("Search Target Text")
Porque este método permite una búsqueda sin tener que tomar en cuenta el caso de una cadena Este podría ser el boleto a lo que está tratando de lograr
Espero que esto te ayude a Makky
en cuanto al rendimiento es mejor poner el toUpperCase en
Texto de cadena = doc.getText (0, doc.getLength ());
en lugar de en el ciclo while
pero gracias por el buen ejemplo.
JTextArea textComp = new JTextArea();
// Highlight the occurrences of the word "public"
highlight(textComp, "public");
// Creates highlights around all occurrences of pattern in textComp
public void highlight(JTextComponent textComp, String pattern)
{
// First remove all old highlights
removeHighlights(textComp);
try
{
Highlighter hilite = textComp.getHighlighter();
Document doc = textComp.getDocument();
String text = doc.getText(0, doc.getLength());
int pos = 0;
// Search for pattern
// see I have updated now its not case sensitive
while ((pos = text.toUpperCase().indexOf(pattern.toUpperCase(), pos)) >= 0)
{
// Create highlighter using private painter and apply around pattern
hilite.addHighlight(pos, pos+pattern.length(), myHighlightPainter);
pos += pattern.length();
}
} catch (BadLocationException e) {
}
}
// Removes only our private highlights
public void removeHighlights(JTextComponent textComp)
{
Highlighter hilite = textComp.getHighlighter();
Highlighter.Highlight[] hilites = hilite.getHighlights();
for (int i=0; i<hilites.length; i++)
{
if (hilites[i].getPainter() instanceof MyHighlightPainter)
{
hilite.removeHighlight(hilites[i]);
}
}
}
// An instance of the private subclass of the default highlight painter
Highlighter.HighlightPainter myHighlightPainter = new MyHighlightPainter(Color.red);
// A private subclass of the default highlight painter
class MyHighlightPainter extends DefaultHighlighter.DefaultHighlightPainter
{
public MyHighlightPainter(Color color)
{
super(color);
}
}