我在javaFX中有一个很大的多行TextArea。有没有一种很好的方法来实现ctrl-f作为find命令?基本上是为了突出搜索的文本。
我知道如何听键击,但我该如何A)突出显示文本和B)滚动到包含文本的TextArea部分?
答案 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());
}
}
您可能希望以递归方式执行此操作,这意味着您可能希望存储最后一个位置,以便继续查看....