【问题标题】:How to implement ctrl+f in a javafx text areajavafx文本区如何实现ctrl+f
【发布时间】:2017-03-15 06:02:04
【问题描述】:

我在 javaFX 中有一个大的多行 TextArea。有没有将 ctrl-f 实现为查找命令的好方法?基本上是为了突出显示搜索到的文本。

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

【问题讨论】:

  • TextFields 根据定义不是单行吗?您实际上在这里问的是什么:如何知道何时按下 ctrl-f?或者如何做突出显示?还是别的什么?
  • 哦,那是我的错。我的意思是TextArea。是的,所以我需要 A) 听 ctrl+f 被击中,然后突出显示文本,然后滚动到可以找到文本的文本区域部分。更重要的是最后两部分我需要帮助和。我会修改我的问题。
  • 现在你的问题可能太宽泛了。如果您可以创建一个简单的minimal reproducible example 来显示您所做的事情以及您遇到的问题,那么您可能更有可能得到答案。

标签: javafx


【解决方案1】:

我实现了类似的东西。假设您可以侦听为用户提供搜索内容的 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 后不久输入的文本?
  • 实际上这是从我编写的拼写检查函数中提取的。基本上,一个人会进行拼写检查,它会搜索文本输入以查找错误并逐个检查它们。
猜你喜欢
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多