2016-06-28 114 views
0

我正在製作一個小記事本程序,因爲我非常無聊,並且以爲我會嘗試在我的程序中實現「查找」功能。突出顯示所有出現的字符串

我想突出顯示每個匹配給定字符串的單詞。

這裏是代碼

if(e.getSource() == m_find){ 
    String s = (String)JOptionPane.showInputDialog("Find Word", "Please search a word"); 
     if(m_area.getText().contains(s)){ 
     int start = m_area.getText().indexOf(s); 
     int length = start + s.length(); 
      try { 
       highlight.addHighlight(start, length, painter); 
      } catch (BadLocationException e1) { 
       e1.printStackTrace(); 
      } 
    } 

這隻能得到這個詞的首次出現的,主要塊,我如何能夠在字的高每發生。

+0

嘗試使用JQ這裏是工作後的鏈接: http://stackoverflow.com/questions/119441/highlight-a-word-with-jquery – shiva

+0

@shiva你認識到這是一個** Java **問題右... – explv

+0

另外,OP從來沒有說過突出顯示沒有工作。 OP在詢問如何突出其餘的單詞。 –

回答

0

我敢肯定,有很多方法,但其中一個將使用while循環來保持突出顯示如果還有更多發現。那麼你只會繼續看着你已經突出顯示的字符串。

String stringToFindWordsIn = m_area.getText(); 

while(stringToFindWordsIn.contains(s)){ 
    // highlight the word 

    // Make stringToFindWordsIn the substring from where you just highlighted to the end (drop off everything before and including the word you just highlighted) 
} 
0

您可以使用indexOf與啓動參數來啓動搜索形式給出的指標,例如實現:

int start = 0; 
do { 
    start = m_area.getText().indexOf(s, start); 
    int length = start + s.length(); 
    try { 
     highlight.addHighlight(start, length, painter); 
    } catch (BadLocationException e1) { 
     e1.printStackTrace(); 
    } 
    start += length; 
} 
0

試試這個:

if(e.getSource() == m_find){ 
     String s = (String)JOptionPane.showInputDialog("Find Word", "Please search a word"); 
     if(m_area.getText().contains(s)){ 
     String text = m_area.getText(); 
     int start = text.indexOf(s); 
     while (start >= 0) { 
      int length = start + s.length(); 
      try { 
       highlight.addHighlight(start, length, painter); 
      } catch (BadLocationException e1) { 
       e1.printStackTrace(); 
      } 
      start = text.indexOf(s, start + 1); 
     } 
    } 
相關問題