2017-01-04 13 views
0

私のClojureプロジェクトでFXMLベースのビューのEventHandlerを作成しようとしています。 ここで説明したように:http://drowsy.de/blog/?p=7私はFXMLでボタンにこのClojure、JavaFXイベントハンドラがネームスペースにない

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

を追加しました。

しかし、私は、アプリケーションを起動したとき、私は、次のエラーメッセージが出ます:ui.listenerで

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. 

はEventHandlerの

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

これが動作しない理由を任意のアイデアですか? 私はこの表記

onAction = #add-tolist-listener 

でそれを試してみましたが、それはあまりにも働いていませんでした。

ありがとうございます!

答えて

0

しかし私は、JavaFXのと完全になじみのない午前:

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

これは、Javaコードのように見えるので、それがうまくいくように、ここでClojureの構文を持つことが見えませんか?私はJavaを使用してClojureコードを呼び出さなければならないと思う?

オフオフ"Calling Clojure code from Java"Invoking Clojure code from Java:また、このブログの記事があなたにしようとする別のアイデアを提供します見つけるかもしれない

ui.listener.add_tolist_listener 

あなたのような何かをしようとしなければならないでしょう。

+0

ui.listener.add_tolist_listenerも機能しません... いいえ、私はClojureでguiを設定しました。私はClojureをJavaで呼び出さない – GameYoker

0

は今

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

を経由して、私のスタート機能でアクションを設定し、それが動作します。

関連する問題