2017-01-04 3 views
0

Ich versuche einen EventHandler für meine FXML basierte Ansicht in meinem Clojure Projekt zu erstellen. Wie hier beschrieben: http://drowsy.de/blog/?p=7 i im FXML dies auf eine SchaltflächeClojure, JavaFX Eventhandler nicht im Namespace

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

hinzugefügt.

Aber wenn ich die Anwendung starten i Nachricht erhalten folgende Fehlermeldung:

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. 

In ui.listener ist die Eventhandler

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

Jede Idee, warum dies nicht funktioniert? Ich versuchte es mit dieser Schreibweise

onAction = #add-tolist-listener 

und es hat auch nicht funktioniert.

Danke!

Antwort

0

Ich bin völlig vertraut mit JavaFX, aber:

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

Das sieht aus wie Java-Code, so Syntax in Clojure, die hier scheint nicht, wie es funktionieren würde? Ich vermute, dass Sie Ihren Clojure-Code mit Java aufrufen müssten?

Abgehend "Calling Clojure code from Java".

Sie müssten versuchen, so etwas wie: Invoking Clojure code from Java:

ui.listener.add_tolist_listener 

Sie auch in diesem Blog-Post gibt Ihnen eine weitere Idee zu versuchen, finden könnten.

+0

ui.listener.add_tolist_listener funktioniert auch nicht ... Nein, ich richte die GUI nur mit Clojure ein, ich rufe Clojure nicht mit Java an – GameYoker

0

Nun wird die Aktion in meiner Start-Funktion über

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

Und es funktioniert eingerichtet.

Verwandte Themen