首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScalaFX按钮=>如何定义动作?

ScalaFX按钮=>如何定义动作?
EN

Stack Overflow用户
提问于 2016-04-12 10:44:38
回答 4查看 3.3K关注 0票数 6

我试图为在onAction 中完成的Button定义一个Button,但我无法让它工作。

代码语言:javascript
复制
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*/
      }
    }
  }
}

我做过这件事,但我犯了个错误

代码语言:javascript
复制
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,但是它也不起作用。

有线索吗?

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-04-12 12:59:56

我不是Scala程序员,但看起来这里混合了两种不同的形式: lambda表达式和显式类。

试一试

代码语言:javascript
复制
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*/
            }
        }

}

代码语言:javascript
复制
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*/
  }

}
票数 3
EN

Stack Overflow用户

发布于 2016-04-25 15:46:55

首先,使用ScalaFX导入scalafx.Includes._是很重要的。它带来了许多ScalaFX特性。

添加onAction处理程序有两种推荐的方法。主要的方法是使用(event:ActionEvent) => { ... )闭包:

代码语言:javascript
复制
import scalafx.Includes._
import scalafx.event.ActionEvent

btn_YES.onAction = (event: ActionEvent) =>  {
  /*Do something*/
}

如果您不关心event对象。您可以保存一些类型并使用handle {...}

代码语言:javascript
复制
import scalafx.Includes._

btn_YES.onAction = handle {
  /*Do something*/
}

在这两种情况下,您都需要导入scalafx.Includes._

票数 4
EN

Stack Overflow用户

发布于 2016-04-12 12:24:01

你可以用这个来做按钮动作,

代码语言:javascript
复制
btn_YES.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
            //Do some action here
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36570947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档