我正在嘗試創建一個搜索欄,突出顯示文本區域中的相應單詞。我有的問題是下面的代碼示例只突出顯示文本區域中第一個出現的單詞,即它不掃描整個文本區域。我該如何做到這一點,以便突出顯示所有關鍵字?通過jTextArea掃描單詞
public void keywordSearch() {
hilit.removeAllHighlights();
String keyword = txtSearch.getText();
String content = txtArea.getText();
int index = content.indexOf(keyword, 0);
if (index >= 0) { // if the keyword was found
try {
int end = index + keyword.length();
hilit.addHighlight(index, end, painter);
txtSearch.setBackground(Color.WHITE);
} catch (BadLocationException e) {
e.printStackTrace();
}
} else {
txtSearch.setBackground(ERROR_COLOR);// changes the color of the text field if the keyword does not exist
}
}
我曾嘗試使用掃描儀類以下修補程序,但它仍然無法正常工作。
Scanner sc = new Scanner(content);
if (index >= 0) { // if the keyword was found
try {
while(sc.hasNext() == true)
{
int end = index + keyword.length();
hilit.addHighlight(index, end, painter);
txtSearch.setBackground(Color.WHITE);
sc.next();
}
任何幫助,非常感謝。提前致謝。使用while循環(進入無限循環)
修復
while(index >= 0) { // if the keyword is found
try {
int end = index + keyword.length();
hilit.addHighlight(index, end, painter);
txtSearch.setBackground(Color.WHITE);
index = content.indexOf(keyword, index);
System.out.println("loop");// test to see if entered infinite loop
} catch (BadLocationException e) {
e.printStackTrace();
}
}
試過這個,但它進入了一個無限循環。 – user3469429
@ user3469429您可能需要從第二個索引+ 1進行掃描。 –