2016-11-04 52 views
0

我嘗試突出顯示匹配搜索詞的單詞的出現次數。但總是隻有第一個突出顯示。 SelectRange()方法可能一次只能突出顯示一個單詞嗎?如果是的話,有沒有不同的方式?如何突出顯示TextArea中每個單詞的出現次數?

findButton.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { 
    @Override 
    public void handle(MouseEvent e) { 
     errorText.setText(""); 
     textArea.deselect(); 
     Matcher matcher; 
     Pattern findWord; 

     if (textField.getText() != null && !textField.getText().isEmpty() && upperLowerCaseMenuItem.isSelected()) { 
      findWord = Pattern.compile(textField.getText()); 
      matcher = findWord.matcher(textArea.getText()); 
     while (matcher.find()) { 
      textArea.selectRange(matcher.start(), matcher.end()); 
     } 
     }else { 
      errorText.setText("Missing search key"); 
     } 
    } 
}); 

回答

0

它與TextArea不可能完成的任務,因爲這種控制不能選擇不連續的文本。如果你拿上TextAreaselectionProperty一看:

public final ReadOnlyObjectProperty<IndexRange> selectionProperty 

它只有一個IndexRange存儲:代表整數值的連續範圍

類。

您可以使用RichTextFXTomas Mikula該控件可用於將樣式添加到多個文本範圍。

相關問題