【问题标题】:Clojure, JavaFX Eventhandler not in namespaceClojure,JavaFX 事件处理程序不在命名空间中
【发布时间】:2017-01-04 14:53:07
【问题描述】:

我正在尝试为我的 Clojure Projekt 中基于 FXML 的视图创建一个 EventHandler。 如此处所述:http://drowsy.de/blog/?p=7 我在 FXML 中添加了这个

onAction="(use 'ui.listener) (add-tolist-listener event)"

到一个按钮。

但是当我启动应用程序时,我收到以下错误消息:

LoadException Error resolving onAction='(use 'ui.listener)
(add-tolist-listener event)', either the event handler is not in 
the Namespace or there is an error in the script.

在ui.listener中是事件处理器

(defn add-tolist-listener [event]
(println "I'm a Button"))

知道为什么这不起作用吗? 我用这个符号试过了

onAction = #add-tolist-listener

它也没有用。

谢谢!

【问题讨论】:

    标签: javafx clojure event-handling fxml


    【解决方案1】:

    但是,我对 JavaFX 完全不熟悉:

    onAction="(use 'ui.listener) (add-tolist-listener event)"
    

    这看起来像 Java 代码,所以在这里使用 Clojure 语法似乎不起作用?我怀疑您必须使用 Java 调用您的 Clojure 代码?

    离开"Calling Clojure code from Java"

    您必须尝试以下方法:

    ui.listener.add_tolist_listener
    

    您可能还会发现这篇博文为您提供了另一个尝试的想法:Invoking Clojure code from Java

    【讨论】:

    • ui.listener.add_tolist_listener 也不起作用...不,我只使用 Clojure 设置 gui,我不使用 Java 调用 Clojure
    【解决方案2】:

    现在是通过

    在我的启动函数中设置动作
    (.setOnAction (.lookup root "#startCalculationBtn")
      (proxy [EventHandler] []
        (handle [^ActionEvent event]
          (start-calculation))
        )
      )
    

    而且它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-16
      • 2013-06-16
      • 2011-12-28
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      相关资源
      最近更新 更多