如何突出显示TextArea中单词的每个出现?

时间:2016-11-04 08:50:33

标签: java javafx textarea

我尝试突出显示匹配搜索词的单词。但始终只有第一次突出显示。 SelectRange()方法是否有可能一次只能突出显示一个单词?如果是,有不同的方式吗?

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");
        }
   }
});

1 个答案:

答案 0 :(得分:0)

使用TextArea这是不可能完成的任务,因为此控件无法选择非连续文本。如果您查看TextArea的{​​{3}}:

public final ReadOnlyObjectProperty<IndexRange> selectionProperty

它只存储一个IndexRange

  

表示连续范围的整数值的类。

您可以使用selectionProperty中的RichTextFX,该控件可用于将样式添加到多个文本范围。