如何在 tornadofx 中更改嵌套控件的样式

How to change the style of a nested control in tornadofx

JavaFx 中的文本区域可以在 css 中分配背景颜色:

.text-area .content {
-fx-background-color: blue ;
}

如何在样式声明中的 tornadoFx 中执行此操作?

  override val root = gridpane {

    orderTextArea = textarea {
        isEditable = false
        prefWidth = 900.0
        prefHeight = 700.0
        isWrapText = true
        //textProperty().bind(viewModel.orderText)
        style {
            textFill = Color.YELLOW
            **//backgroundcolor**
         }

    }

这里有两个选择:

  1. 创建样式表并在其中描述正确的选择器
  2. 找到子节点并直接对其应用样式

不推荐第 2 种方法,因为您无法保证控件何时实际实例化该子节点。 TornadoFX 有两种方法做 1.

您可以创建一个类型安全的样式表并将对它的引用添加到您的应用程序 class。样式表如下所示:

class Styles : Stylesheet() {
    init {
        textArea {
            content {
                backgroundColor += Color.BLUE
            }
        }
    }
}

正如我提到的,在 TornadoFX 中还有另一个选项,那就是创建一个内联样式表。这不是内联样式,而是一个完整的样式表,只会应用于您定义它的节点(当然是子节点)

textarea {
    prefWidth = 900.0
    prefHeight = 700.0
    stylesheet {
        Stylesheet.content {
            backgroundColor += Color.BLUE
        }
    }
}

请注意,您需要在样式表中引用定义的 CSS classes。

创建外部类型安全样式表始终是最佳选择。