мое основное пространство имен вставлено ниже;когда я запускаю ./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, хотя все примеры указывают на обратное.