我尝试突出显示匹配搜索词的单词。但始终只有第一次突出显示。 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");
}
}
});
答案 0 :(得分:0)
使用TextArea
这是不可能完成的任务,因为此控件无法选择非连续文本。如果您查看TextArea
的{{3}}:
public final ReadOnlyObjectProperty<IndexRange> selectionProperty
它只存储一个IndexRange
:
表示连续范围的整数值的类。
您可以使用selectionProperty
中的RichTextFX,该控件可用于将样式添加到多个文本范围。