2016-11-04 5 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 불가능한 작업이다.

public final ReadOnlyObjectProperty<IndexRange> selectionProperty 

그것은 단지 하나의 IndexRange 저장 :

클래스는 정수 값의 연속 범위를 나타내는 당신은 selectionPropertyTextArea의에 살펴 보도록합니다.

Tomas MikulaRichTextFX에서 컨트롤을 사용하여 여러 텍스트 범위에 스타일을 추가 할 수 있습니다.

관련 문제