如何在javafx文本区域中实现ctrl + f

时间:2017-03-14 15:35:03

标签: javafx

我在javaFX中有一个很大的多行TextArea。有没有一种很好的方法来实现ctrl-f作为find命令?基本上是为了突出搜索的文本。

我知道如何听键击,但我该如何A)突出显示文本和B)滚动到包含文本的TextArea部分?

1 个答案:

答案 0 :(得分:2)

我实施了类似的东西。假设您可以监听为用户提供搜索内容的CTRL + F,您可以采用类似于此的方法来寻找它。

private void findAndSelectString(String lookingFor)
{
    Pattern pattern = Pattern.compile("\\b" + lookingFor + "\\b");
    Matcher matcher = pattern.matcher(input.getText()); //Where input is a TextInput class
    boolean found = matcher.find(0);
    if(found){
        input.selectRange(matcher.start(), matcher.end());
    }
}

您可能希望以递归方式执行此操作,这意味着您可能希望存储最后一个位置,以便继续查看....