Mahlzeit.
Ich möchte gern Text in einem JTextPane farblich hervorheben mittels suchfunktion. das klappt auch ganz gut, bis man im JTextPane einen zeilenumbruch hervorruft. dann springt die schleife eins weiter und die markierung des textes fängt einen character zu spät an. Beim zweiten Zeilenumbruch dann zwei character später usw.
(Wenn ich den Inhalt in eine excel-datei exportiere, dann erkennt er den zeilenumbruch überhaupt nich sondern setzt die beiden worte aneinander)
Ich möchte gern Text in einem JTextPane farblich hervorheben mittels suchfunktion. das klappt auch ganz gut, bis man im JTextPane einen zeilenumbruch hervorruft. dann springt die schleife eins weiter und die markierung des textes fängt einen character zu spät an. Beim zweiten Zeilenumbruch dann zwei character später usw.
(Wenn ich den Inhalt in eine excel-datei exportiere, dann erkennt er den zeilenumbruch überhaupt nich sondern setzt die beiden worte aneinander)
Java:
private static void quickSearch(java.awt.event.MouseEvent evt)
{
String searchItem = recordView.getSearchItem().trim();
int searchItemLength = searchItem.length();
int recordContentLength = recordView.getContentForQuickSearch().getLength();
StyledDocument doc = recordView.getContentForQuickSearch();
SimpleAttributeSet color = new SimpleAttributeSet();
StyleConstants.setBackground(color, Color.WHITE);
doc.setCharacterAttributes(0,recordContentLength,color,false);
for(int i = 0; i <= (recordContentLength-searchItemLength); ++i)
{
if(recordView.getRecordContent().substring(i,i+searchItemLength).equals(searchItem))
{
StyleConstants.setBackground(color, Color.GREEN);
doc.setCharacterAttributes(i,searchItemLength,color,true);
}
else if(!recordView.getRecordContent().contains(searchItem))
{
StyleConstants.setBackground(color, Color.WHITE);
doc.setCharacterAttributes(0,recordContentLength,color,false);
}
}
}