Clojure, JavaFX Eventhandler tidak ada di namespace

saya mencoba membuat EventHandler untuk Tampilan berbasis FXML saya di Clojure Projekt saya. Seperti dijelaskan di sini: http://drowsy.de/blog/?p=7 i ditambahkan di FXML ini

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

ke sebuah tombol.

Tetapi ketika saya meluncurkan aplikasi saya mendapatkan pesan kesalahan berikut:

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.

Di ui.listener adalah pengendali acara

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

Adakah yang tahu mengapa ini tidak berhasil? Saya mencobanya dengan notasi ini

onAction = #add-tolist-listener

dan itu tidak berhasil juga.

Terima kasih!


person GameYoker    schedule 04.01.2017    source sumber


Jawaban (2)


Namun saya sama sekali tidak terbiasa dengan JavaFX:

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

Ini terlihat seperti kode Java, jadi memasukkan sintaks Clojure di sini sepertinya tidak akan berhasil? Saya kira Anda harus memanggil kode Clojure Anda menggunakan Java?

Mulai "Memanggil kode Clojure dari Java".

Anda harus mencoba sesuatu seperti:

ui.listener.add_tolist_listener

Anda mungkin juga menemukan postingan blog ini memberi Anda ide lain untuk dicoba: Memanggil kode Clojure dari Java.

person Mike    schedule 05.01.2017
comment
ui.listener.add_tolist_listener juga tidak berfungsi... Tidak, saya mengatur gui hanya dengan Clojure, saya tidak memanggil Clojure dengan Java - person GameYoker; 05.01.2017

Sekarang sudah menyiapkan tindakan di fungsi awal saya melalui

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

Dan itu berhasil.

person GameYoker    schedule 05.01.2017