带有Clojure的JavaFXPorts:“仅在事件线程上允许执行此操作; currentThread = main”

时间:2018-10-13 15:22:00

标签: android gradle javafx clojure javafxports

我在下面插入了我的主要名称空间;当我运行./gradlew run时,只要我注释掉primary-screen (.getPrimary Screen)行,它就可以正常运行,所以无论出于什么原因,这似乎都被破坏了?

(ns lyrion.cec
  (:gen-class)
  (:require [clojurefx.clojurefx :as fx])
  (:import (javafx.stage Stage Screen)
           (javafx.scene Scene)
           (javafx.scene.control Label)
           (javafx.geometry Rectangle2D)))

(defn init []
  nil)

(defn start [^Stage stage]
  (let [content ^Label (Label. "Hello World")
        primary-screen (.getPrimary Screen)
        ;;visual-bounds ^Rectangle2D (.getVisualBounds ^Screen primary-screen)
        ;;scene ^Scene (Scene. content (.getWidth visual-bounds) (.getHeight visual-bounds))
        scene ^Scene (Scene. content 800 600)]
    (.setScene stage scene)
    (.show stage)))

(defn stop []
  nil)

(defn -main
  ""
  [& args]
  (fx/start-app init start stop))

fx/start-app是我的clojurefx库的功能,该函数创建一个Application子类,并根据规范相应地调用init,start和stop。到目前为止,我在任何桌面JavaFX应用程序中都没有遇到任何问题。同样很奇怪的是,即使所有示例都相反,在JavaFXPorts中也有必要自己完成此操作。

0 个答案:

没有答案