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

如何实现ctrl+;javafx文本区域中的f,javafx,Javafx,我在javaFX中有一个很大的多行文本区域。有没有一种很好的方法可以将ctrl-f实现为find命令?基本上是突出显示搜索的文本 我知道如何收听按键,但我如何a)突出显示文本并B)滚动到文本区域中包含文本的部分?我实现了类似的功能。假设您可以监听CTRL+F,它为用户提供了一些搜索内容,那么您可以使用类似的方法来查找它 private void findAndSelectString(String lookingFor) { Pattern pattern = Pattern.compi

我在javaFX中有一个很大的多行文本区域。有没有一种很好的方法可以将ctrl-f实现为find命令?基本上是突出显示搜索的文本


我知道如何收听按键,但我如何a)突出显示文本并B)滚动到文本区域中包含文本的部分?

我实现了类似的功能。假设您可以监听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());
    }
}

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

我实现了类似的功能。假设您可以监听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());
    }
}

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

是否定义为
TextField
s单行?你到底在问什么:如何知道何时按下ctrl-f?或者如何突出显示?还是别的?哦,那是我的错。我是说文本区。是的,所以我需要A)听ctrl+f组合键,然后突出显示文本,然后滚动到文本区域中可以找到文本的部分。还有最后两件我需要帮忙。我会修正我的问题。也许现在你的问题太宽泛了。如果你能创建一个简单的表格来显示你所做的事情和你所遇到的困难,你就更有可能得到答案。
TextField
s从定义上看不是一行吗?你到底在问什么:如何知道何时按下ctrl-f?或者如何突出显示?还是别的?哦,那是我的错。我是说文本区。是的,所以我需要A)听ctrl+f组合键,然后突出显示文本,然后滚动到文本区域中可以找到文本的部分。还有最后两件我需要帮忙。我会修正我的问题。也许现在你的问题太宽泛了。如果你能创造一个简单的例子来展示你所做的事情和你所处的困境,你可能会得到一个答案。谢谢。您最终是如何实现文本输入的?你是弹出了一个搜索字段,还是仅仅捕获了在ctrl-f之后输入的文本?实际上这是从我编写的拼写检查功能中提取出来的。基本上,一个人会点击拼写检查,它会搜索文本输入以查找错误,然后一个接一个地检查错误。谢谢。您最终是如何实现文本输入的?你是弹出了一个搜索字段,还是仅仅捕获了在ctrl-f之后输入的文本?实际上这是从我编写的拼写检查功能中提取出来的。基本上,一个人会点击拼写检查,它会搜索文本输入以查找错误,然后逐个检查错误。