Clojure, обработчик событий JavaFX не в пространстве имен

я пытаюсь создать EventHandler для моего представления на основе FXML в моем Clojure Projekt. Как описано здесь: http://drowsy.de/blog/?p=7 i добавлено в 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

и это тоже не сработало.

Спасибо!


person GameYoker    schedule 04.01.2017    source источник


Ответы (2)


Однако я совершенно не знаком с JavaFX:

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

Это похоже на код Java, так что наличие здесь синтаксиса Clojure не похоже на то, что это сработает? Я подозреваю, что вам придется вызывать свой код Clojure с помощью Java?

Отключение "Вызов кода Clojure из Java".

Вам нужно будет попробовать что-то вроде:

ui.listener.add_tolist_listener

Вы также можете найти в этом сообщении блога еще одну идею: Вызов кода Clojure из Java.

person Mike    schedule 05.01.2017
comment
ui.listener.add_tolist_listener тоже не работает... Нет, я настроил gui только с Clojure, я не вызываю Clojure с Java - person GameYoker; 05.01.2017

Теперь настроено действие в моей функции запуска через

(.setOnAction (.lookup root "#startCalculationBtn")
  (proxy [EventHandler] []
    (handle [^ActionEvent event]
      (start-calculation))
    )
  )

И это работает.

person GameYoker    schedule 05.01.2017