在JavaFX中,可以使用正则表达式来找到并突出显示文本中的特定单词。下面是一个示例代码,演示了如何在JavaFX中实现这一功能:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class HighlightWords extends Application {
private static final String TEXT = "This is a sample text with some words.";
@Override
public void start(Stage primaryStage) {
Label label = new Label("Enter a word to highlight:");
TextArea textArea = new TextArea();
textArea.setWrapText(true);
VBox root = new VBox(label, textArea);
Scene scene = new Scene(root, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
String wordToHighlight = newValue.trim();
String highlightedText = highlightWord(TEXT, wordToHighlight);
textArea.setText(highlightedText);
});
}
private String highlightWord(String text, String word) {
Pattern pattern = Pattern.compile("\\b" + word + "\\b", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(text);
StringBuilder highlightedText = new StringBuilder();
int lastIndex = 0;
while (matcher.find()) {
highlightedText.append(text, lastIndex, matcher.start());
highlightedText.append("<b>").append(text, matcher.start(), matcher.end()).append("</b>");
lastIndex = matcher.end();
}
highlightedText.append(text.substring(lastIndex));
return highlightedText.toString();
}
public static void main(String[] args) {
launch(args);
}
}
上述代码中,我们创建了一个JavaFX应用程序,其中包含一个标签和一个文本区域。用户可以在文本区域中输入要突出显示的单词。每当文本区域的内容发生变化时,我们使用正则表达式找到并突出显示匹配的单词。
在highlightWord
方法中,我们使用Pattern
类和Matcher
类来执行正则表达式匹配。我们使用\b
来匹配单词的边界,并使用Pattern.CASE_INSENSITIVE
标志来忽略大小写。
在找到匹配的单词后,我们使用StringBuilder
来构建突出显示的文本。我们将匹配的单词用<b>
和</b>
标签包裹起来,以实现突出显示效果。
最后,我们将突出显示的文本设置回文本区域中,以便用户可以看到结果。
请注意,这只是一个简单的示例,用于演示在JavaFX中使用正则表达式突出显示单词。在实际应用中,您可能需要根据具体需求进行修改和扩展。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云