gpt4 book ai didi

java - 如何在javafx Textarea中突出显示文本?

转载 作者:行者123 更新时间:2023-12-01 16:49:39 29 4
gpt4 key购买 nike

我正在 JavaFX 中构建一个记事本项目。目前,我添加了查找和替换功能。我将在一个文本框中输入一个单词,并在另一个文本框中输入可替换的单词,然后替换它们。到这里,工作正常。但我想添加一个功能,如果我在搜索框中写一个单词,记事本文本区域中的单词将突出显示。我正在使用 JavaFX。我搜索了很多关于如何添加荧光笔的信息。不过大部分都是用java swing。对于 JavaFX,我不知道如何添加荧光笔。

public void find_and_highlight(ActionEvent e)
{
String text=A1.getText();
String findtext=find.getText();
int text_ln=A1.getText().length();
int word_ln=find.getText().length();
for(int i=0;i<text_ln-word_ln;i++)
{
String sub=text.substring(i,i+word_ln);
if(sub.equals(findtext))
{
// what to do here
}
}

}

因此,在上面的代码中,当我在“查找文本”字符串中写入一些文本并按下按钮时,该功能就会被激活。字符串“text”包含文本区域中的文本。如果找到搜索词,我想突出显示从索引 i 到索引 i+ word_ln 的文本。所以基本上我想要,

highlight(i, i + word_len);

希望我能得到帮助:)

最佳答案

我认为没有直接的方法可以做到这一点,但您可以尝试 JFoenix 中的 JFXHighlighter 。这是一个例子:

JFXHighlighter highlighter = new JFXHighlighter();
highlighter.setPaint(Color.YELLOW);

TextArea textArea = new TextArea("This is my text");
Button highlightButton = new Button("Highlight");
VBox parent = new VBox(textArea, highlightButton);

highlightButton.setOnAction(event -> {
highlighter.highlight(parent, "text");
event.consume();
});

输出:

enter image description here

注意:当TextArea的文本发生变化时,需要重新突出显示。您只需在 textProperty() 上分配更改监听器即可做到这一点。

Java 8 的 Maven 依赖项:

<!-- https://mvnrepository.com/artifact/com.jfoenix/jfoenix -->
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>8.0.9</version>
</dependency>

Java 9+ 的 Maven 依赖项:

<!-- https://mvnrepository.com/artifact/com.jfoenix/jfoenix -->
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>9.0.9</version>
</dependency>

关于java - 如何在javafx Textarea中突出显示文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61716359/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com