我正在使用javaFx创建一个项目,我需要在文本中搜索给定字符串的第n个匹配项。我的项目中有一个按钮,第一次点击它应该找到第一个匹配,第二次点击它应该找到第二个匹配,所以一个。为此,我使用lambda表达式编写了以下代码
int pos=0;
b1.setOnAction((ActionEvent e) -> {
String str=ta.getText(); //given text
String srch=t1.getText(); //string to be searched
pos = str.indexOf(srch,pos+1);
ta.selectRange(pos, pos+srch.length());
});
但我收到错误
从lambda表达式引用的局部变量必须是最终的或有效的最终版本。
如何解决此问题?
答案 0 :(得分:1)
你能发布完整的代码吗?
也许尝试这样的事情:
int pos=0;
b1.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
String str=ta.getText(); //given text
String srch=t1.getText(); //string to be searched
pos = str.indexOf(srch,pos+1);
ta.selectRange(pos, pos+srch.length());
}
});