ScalaFX Button => 如何定义动作?
ScalaFX Button => How to define the action?
我正在尝试为在 scalafx 中完成的 Button 定义 onAction 动作但我无法正常工作。
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
,但它也不起作用。
有线索吗?
谢谢
您可以将其用于按钮操作,
btn_YES.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//Do some action here
}
});
我不是 Scala 程序员,但看起来您在这里混合了两种不同的形式:lambda 表达式和显式 class.
尝试
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*/
}
}
首先,使用 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._
我试过了
Import scalafx.Includes._
import scalafx.event.ActionEvent
btn_YES.onAction = (event: ActionEvent) => {
/*Do something*/
}
...
import scalafx.Includes._
btn_YES.onAction = handle {
/*Do something*/
}
在 javafx.scene.SubScene.setOnKeyPressed (..),setOnMouseEntered(..) 它绝对不起作用。
new EventHandler[KeyEvent]() {
override def handle(event:KeyEvent){...}
}
对我有用。
我正在尝试为在 scalafx 中完成的 Button 定义 onAction 动作但我无法正常工作。
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
,但它也不起作用。
有线索吗?
谢谢
您可以将其用于按钮操作,
btn_YES.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
//Do some action here
}
});
我不是 Scala 程序员,但看起来您在这里混合了两种不同的形式:lambda 表达式和显式 class.
尝试
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*/
}
}
首先,使用 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._
我试过了
Import scalafx.Includes._
import scalafx.event.ActionEvent
btn_YES.onAction = (event: ActionEvent) => {
/*Do something*/
}
...
import scalafx.Includes._
btn_YES.onAction = handle {
/*Do something*/
}
在 javafx.scene.SubScene.setOnKeyPressed (..),setOnMouseEntered(..) 它绝对不起作用。
new EventHandler[KeyEvent]() {
override def handle(event:KeyEvent){...}
}
对我有用。