javafx - 为什么我的场景为空?

标签 javafx kotlin tornadofx

我正在尝试使用 Javafx(使用 TornadoFX 库)进行一些 3D 工作,但无法将我的 PerspectiveCamera 设置为 Scene 作为 Scene 返回null

我像这样启动我的程序:

class ThreeDTest : App(HomeView::class, ThreeDStyles::class) {
    override fun start(stage: Stage) {
        super.start(stage)
        stage.show()
        stage.scene.fill = Color.BLACK

        val primaryScreenBounds = Screen.getPrimary().visualBounds

        stage.maxWidth = 1920.0
        stage.maxHeight = 1080.0
        stage.minWidth = 1920.0
        stage.minHeight = 1080.0
    }
}

然后在 HomeView 类中我有这个:

class HomeView : View() {
    override val root = stackpane {
        val axisGroup = Xform()
        val world = Xform()
        val camera = PerspectiveCamera(true)
        val cameraXform = Xform()
        val cameraXform2 = Xform()
        val cameraXform3 = Xform()
        val cameraInitialDistance = -450.0
        val cameraInitialXAngle = 70.0
        val cameraInitialYAngle = 320.0
        val cameraNearClip = 0.1
        val cameraFarClip = 10000.0

        //just a builder class to add properties to the camera
        buildCamera(this, cameraXform, cameraXform2, cameraXform3, camera, cameraNearClip, cameraFarClip, cameraInitialDistance,
            cameraInitialYAngle, cameraInitialXAngle)
        buildAxes(axisGroup, world)

        println(scene)
        //returns null
        scene.camera = camera
        //this does not work as scene is null
}

我是不是做错了什么?我不知道为什么我的 Scene 为空,因为我认为 TornadoFX View 应该在初始化时创建一个新的 Scene ?我需要在App类中手动创建它吗?我尝试覆盖 createPrimaryScene 函数,并将代码移动到 HomeView View 中的 init 函数,但都没有成功。

有什么想法吗?在这里拔毛。

(哦,顺便说一句,坦率地说,TornadoFX 中的 3D 支持会让我的一生受益匪浅?)

最佳答案

View 是在附加场景之前创建的,因此要操作场景,只需覆盖 onDock 并在那里执行操作即可。当onDock被调用时,场景被附加。

关于javafx - 为什么我的场景为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47046743/

相关文章:

android - Kotlin 内联函数用于检查用户是否经过身份验证?

javafx - TornadoFX:在ValidationContext中比较2个表单值

javafx - 在 FXML ImageView 中加载图像?

JAVA:线程 "JavaFX Application Thread"java.lang.RuntimeException 中出现异常:java.lang.reflect.InitationTargetException 错误

java - 如何显示 TreeTableView 并将 T 对象列表作为子项

java - 如何获取在 MenuButton 中单击的 MenuItem 的名称

java - java 和 kotlin 之间的泛型!!帮我?

java.lang.NoClassDefFoundError : org. jgroups.-$$Lambda$CbeKW6_ggTAEDuiYP5MNn0HcZP8

intellij-idea - TornadoFX Unresolved JavaFx

javafx - 如何在JavaFX的MenuButton中创建子菜单?