【问题标题】:How to highlight every occurence of a word in a TextArea?如何突出显示文本区域中出现的每个单词?
【发布时间】:2016-11-04 08:50:33
【问题描述】:

我尝试突出显示与搜索词匹配的单词。但总是只有第一次出现突出显示。 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");
        }
   }
});

【问题讨论】:

    标签: java javafx textarea


    【解决方案1】:

    TextArea 是不可能完成的任务,因为此控件无法选择非连续文本。如果你看看TextAreaselectionProperty

    public final ReadOnlyObjectProperty<IndexRange> selectionProperty
    

    它只存储一个IndexRange

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 2021-09-14
      • 2010-09-13
      • 2015-01-23
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多