在 TornadoFX 中为 VBox 添加边框样式

Nic*_*nto 2 tornadofx

在我的 TornadoFX 应用程序的视图中,我有一个边框,在视图的左侧和右侧都有一个 VBox(中间没有任何内容)。截至目前,每个 VBox 具有相同的背景颜色,因此它们有点融合在一起。我想显示两个 VBox 之间的某种分离(即,一个 VBox 的色调略深、边框颜色或两者都有)。有人会碰巧知道如何向 vbox 添加边框样式吗?或者添加背景颜色?

为了澄清起见,我正在寻找一种在我的 View 类定义的主体内执行此操作的方法,因此我没有使用 CSS 或 FXML 进行样式设置。

Edv*_*yse 7

最好的方法是创建一个类型安全的样式表,在其中为每个 vbox 定义一个类并将这些类分配给 vbox。这是一个包含样式表、应用定义和主视图的完整应用:

class MyApp : App(MainView::class, MyStyles::class)

class MyStyles : Stylesheet() {
    companion object {
        val leftBox by cssclass()
        val rightBox by cssclass()
    }

    init {
        leftBox {
            backgroundColor += c("#cecece")
            borderColor += box(c("#a1a1a1"))
            minWidth = 200.px
        }

        rightBox {
            backgroundColor += c("#fefefe")
            borderColor += box(c("#222222"))
            minWidth = 200.px
        }
    }
}

class MainView : View("My View") {
    override val root = borderpane {
        setPrefSize(800.0, 600.0)

        left {
            vbox {
                addClass(MyStyles.leftBox)
            }
        }
        right {
            vbox {
                addClass(MyStyles.rightBox)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面代码的图示

如果您对样式表过敏,您可以内联设置这些属性或也使用内联样式表:

class MainView : View("My View") {
    override val root = borderpane {
        setPrefSize(800.0, 600.0)

        left {
            vbox {
                style {
                    backgroundColor += c("#cecece")
                    borderColor += box(c("#a1a1a1"))
                    minWidth = 200.px
                }
            }
        }
        right {
            vbox {
                style {
                    backgroundColor += c("#fefefe")
                    borderColor += box(c("#222222"))
                    minWidth = 200.px
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,您可以配置节点的相应属性,而不是应用样式。我不会举一个例子,因为你真的不应该这样做:)