ScalaFX待办事项应用报错:缺失参数类型,请求排查
ScalaFX待办应用「缺失参数类型」报错解决方案
错误原因
你代码中todoTable.selectionModel().selectedItem.onChange的lambda回调存在两个问题:
ReadOnlyObjectProperty[Todo]的onChange回调需要接收三个参数(ObservableValue实例、旧选中值、新选中值),但你只写了两个参数;- 未明确标注参数类型,导致Scala编译器无法自动推断参数的类型信息,从而抛出「缺失参数类型」错误。
解决方案
方案1:修正参数个数并标注类型
补全三个参数,给需要使用的newValue标注类型,忽略的参数用下划线代替:
todoTable.selectionModel().selectedItem.onChange( (_: javafx.beans.value.ObservableValue[_ <: Todo], _: Todo, newValue: Todo) => showTodoDetails(Some(newValue)) )
方案2:使用ScalaFX简化回调(推荐)
ScalaFX提供了更符合Scala风格的onChange重载,只需接收新值作为参数,编译器可自动推断类型:
todoTable.selectionModel().selectedItem.onChange { newValue => showTodoDetails(Option(newValue)) }
额外优化:用
Option(newValue)替代Some(newValue),当没有选中项时newValue为null,Option(newValue)会自动转为None,完美匹配showTodoDetails方法的参数要求。
内容的提问来源于stack exchange,提问作者hui yeen
相关产品推荐
相关产品推荐

