首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScalaFx MouseEvent: java.lang.NoSuchFieldError:后退

ScalaFx MouseEvent: java.lang.NoSuchFieldError:后退
EN

Stack Overflow用户
提问于 2020-01-25 06:17:51
回答 1查看 77关注 0票数 1

如果我切换到JavaFx类引用(解决方法),那么在引用ScalaFx类时在运行时出现此错误(请参阅标题)的原因是什么?在Scala2.12和ScalaFx 8.0.192-R14中,事情可以在没有基于JavaFx的解决方法的情况下工作。关于环境:Scala2.13.1,ScalaFx 12.0.2-R18,IntelliJ 2019.3.2,Java8,Windows10。下面我将提供核心代码片段,希望能够突出这个问题。

对于ScalaFx MouseEvent类引用,似乎会使用me.button生成异常:

代码语言:javascript
复制
import scalafx.Includes._    
import scalafx.scene.input.{MouseButton, MouseEvent}
...
    def flowPaneEvents(flowpane: FlowPane): Unit = {
      flowpane.onMouseClicked = (me: MouseEvent) => {
        // this statement causes the exception with scalafx
        me.button match {
          case MouseButton.Primary   => println("primary button")
          case MouseButton.Secondary => println("secondary button")
          case _ =>
        }
        me.consume()
      }
    }

而对于javaFx类,一切都运行得很好。如下所示:

代码语言:javascript
复制
import scalafx.Includes._    
import javafx.scene.{input => jfxsi}
...
def flowPaneEvents(flowpane: FlowPane): Unit = {
  flowpane.onMouseClicked = (me: MouseEvent) => {
    // this javafx based reference gets things done
    me.getButton match {
      case jfxsi.MouseButton.PRIMARY => println("primary button")
      case jfxsi.MouseButton.SECONDARY => println("secondary button")
      case _ =>
    }
    me.consume()
  }
}

我错过了什么(我试图重新导入sbt库依赖项,但到目前为止还不够幸运)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-25 10:29:58

ScalaFX 12.0.2将与JavaFX 12一起使用。如果您将其与Java8一起使用,那么当您的JavaFX 8在path中时,您将遇到奇怪的问题。使用Java8的Java8。这在项目网站上有明确的说明:https://github.com/scalafx/scalafx#scalafx-8

字段"BACK“是在JavaFX 12中添加的,参见接口文档:https://openjfx.io/javadoc/12/javafx.graphics/javafx/scene/input/MouseButton.html#BACK在JavaFX 8中不存在,所以这就是"java.lang.NoSuchFieldError: BACK”的原因-- ScalaFX试图访问不存在的字段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59904382

复制
相关文章

相似问题

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