TornadoFX:Type-Safe CSS 与其他库

TornadoFX: Type-Safe CSS with other libraries

我是 Kolin 和 TornadoFX 的新手,我目前正在试用它的一些功能。 我想使用 JFoenix-Library 并使用 TornadoFX 的 type-safe CSS 功能设置其控件的样式。但是我不知道如何修改给定 JFoenix 控件的 CSS class 的样式。

例如,JFXDecorator 有默认的 CSS class jfx-decorator。要更改标题栏的背景颜色,我必须修改 class jfx-decorator-buttons-container。我如何使用 TornadoFX 做到这一点?在 .css 文件中,我只使用

.jfx-decorator-buttons-container {
  -fx-background-color: red;
}

TornadoFX 可以吗?

您提到 类 jfx-decoratorjfx-decorator-buttons-container,但您的示例 CSS 使用 类 jfx-decorator-buttonscontainer.我不确定您真正想要哪个 类,但我会添加后两个,因为这会根据您的示例生成 CSS。

class Styles : Stylesheet() {
    companion object {
        val jfxDecoratorButtons by cssclass()
        val container by cssclass()
    }

    init {
        jfxDecoratorButtons and container {
            backgroundColor += Color.RED
        }
    }
}

更新:您更改了问题中的代码,因此这是将产生该输出的更新版本:

class Styles : Stylesheet() {
    companion object {
        val jfxDecoratorButtonsContainer by cssclass()
    }

    init {
        jfxDecoratorButtonsContainer {
            backgroundColor += Color.RED
        }
    }
}

驼峰式选择器会自动转换为带有连字符的小写形式。您还可以在 cssclass 委托函数中指定确切的名称:

val myCssClass by cssclass("my-slightly-different-css-class")

另请注意,由于 backgroundColor 属性 接受多个值,您必须使用 += "add" 将颜色添加到颜色列表中。这是所有接受多个值的属性的通用模式。