Vaadin Flow TextField添加focus listener IDE报错该如何解决
代码错误原因分析
- 语法逻辑混淆:你同时混用了Lambda表达式和匿名内部类两种写法,Lambda表达式本身就是函数式接口抽象方法的实现内容,不需要再额外嵌套
@Override和方法定义结构。 - 方法名不匹配:Vaadin Flow的
FocusListener对应的抽象方法是onFocus(FocusEvent<T> event),并非你写的focus()方法,方法签名不匹配自然会报类型错误。
正确实现写法
写法1:Lambda表达式(推荐)
txtField.addFocusListener(event -> { System.out.println("Focus"); });
如果只有一行执行代码还可以省略大括号:
txtField.addFocusListener(event -> System.out.println("Focus"));
写法2:匿名内部类
txtField.addFocusListener(new FocusListener<TextField>() { @Override public void onFocus(FocusEvent<TextField> event) { System.out.println("Focus"); } });
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

