Clojure,JavaFX Eventhandler不在命名空间中

时间:2017-01-04 14:53:07

标签: javafx clojure event-handling fxml

我试图在我的Clojure Projekt中为基于FXML的View创建一个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

并且它也没有奏效。

谢谢!

2 个答案:

答案 0 :(得分:0)

我完全不熟悉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

答案 1 :(得分:0)

现在通过

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

它有效。