私の質問は非常に簡単です。
JtextAreaがあります。私の目的は、その行の最初の文字の先頭からそのテキストエリアの行を強調表示することです。Java行の開始と終了のオフセットを使用すると、行全体を強調表示できますが、見栄えが悪くなります。
その行からすべてのテキストを取得しようとしています。通常、スペースが含まれます。私が試したこと:
String text = textArea_1.getText(); //My TextArea
int startIndex = textArea_1.getLineStartOffset(i11); //i11 is the Line Number
int endIndex = textArea_1.getLineEndOffset(i11);
String myString = text.substring(startIndex, endIndex);
//I get all text from that line
for(int i1 = 0; i1 < myString.length(); i1++){
//This is trying to increment startindex until it gets a non empty space,
//the counter should stop.
while(Character.isWhitespace(myString.charAt(i1))){
startIndex++;
break;
}
}
String myString2 = text.substring(startIndex, endIndex);
//I now pass the new startIndex
String [] javaWords = {myString2};//Function highlight takes an array.
System.out.println("String to Highlight: " + myString2);
highLight(textArea_1, javaWords);//Function to Highlight
蛍光ペンの方法:
public void highLight(JTextComponent textComp, String[] pattern) {
try {
Highlighter hilite = textComp.getHighlighter();
javax.swing.text.Document doc = textComp.getDocument();
String text = doc.getText(0, doc.getLength());
for (int i = 0; i < pattern.length; i++) {
int pos = 0;
// Search for pattern
while ((pos = text.indexOf(pattern[i], pos)) >= 0) {
hilite.addHighlight(pos, pos + pattern[i].length(),painter);
pos += pattern[i].length();
}
}
} catch (BadLocationException e) {}
}
上記のコードの結果:
in x;
string y;
chr z;
上記を強調する必要があります。私は何かが足りないのですか?