我正在尝试为 scalafx 中完成的按钮定义 onAction ,但我无法让它工作。< / p>
package App.Desktop
import javafx.event.EventHandler
import scalafx.event.ActionEvent
import scalafx.scene.control.Button
class Window() {
btn_YES.onAction = (event: ActionEvent) =>
new EventHandler[ActionEvent] {
override def handle(event: ActionEvent) {
/*Do something*/
}
}
}
}
我已经这样做但是我收到了错误
Error: type mismatch;
found : scalafx.event.ActionEvent => javafx.event.EventHandler[scalafx.event.ActionEvent]
required: javafx.event.EventHandler[javafx.event.ActionEvent]
btn_YES.onAction = (event: ActionEvent) => new EventHandler[ActionEvent]
我还尝试使用javafx.event.ActionEvent
代替scalafx
,但它也不起作用。
有任何线索吗?
由于
答案 0 :(得分:3)
我不是Scala程序员,但看起来你在这里混合了两种不同的形式:一个lambda表达式和一个显式类。
尝试
package App.Desktop
import javafx.event.EventHandler
import javafx.event.ActionEvent
import scalafx.scene.control.Button
class Window() {
btn_YES.onAction =
new EventHandler[ActionEvent] {
override def handle(event: ActionEvent) {
/*Do something*/
}
}
}
或
package App.Desktop
import javafx.event.EventHandler
import javafx.event.ActionEvent
import scalafx.scene.control.Button
class Window() {
btn_YES.onAction = (event: ActionEvent) => {
/*Do something*/
}
}
答案 1 :(得分:2)
拳头,使用ScalaFX导入scalafx.Includes._
非常重要。它带来了许多ScalaFX功能。
有两种方法可以添加onAction
处理程序。主要是使用(event:ActionEvent) => { ... )
闭包:
import scalafx.Includes._
import scalafx.event.ActionEvent
btn_YES.onAction = (event: ActionEvent) => {
/*Do something*/
}
如果您不关心event
对象。您可以保存一些输入并使用handle {...}
:
import scalafx.Includes._
btn_YES.onAction = handle {
/*Do something*/
}
在这两种情况下,您都需要导入scalafx.Includes._
答案 2 :(得分:0)
您可以将此用于按钮操作,
btn_YES.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//Do some action here
}
});
答案 3 :(得分:0)
我试过了
List<Todo> todos = context.watch<List<Todo>>()
.where((e) =>
e.category == widget.selectedCategory && e.isCompleted == false)
.toList() ??
[];
在 javafx.scene.SubScene.setOnKeyPressed (..), setOnMouseEntered(..) 上它绝对不起作用。
Import scalafx.Includes._
import scalafx.event.ActionEvent
btn_YES.onAction = (event: ActionEvent) => {
/*Do something*/
}
...
import scalafx.Includes._
btn_YES.onAction = handle {
/*Do something*/
}
这对我有用。