Javafx 如何更改FX中嵌套控件的样式

Javafx 如何更改FX中嵌套控件的样式,javafx,tornadofx,Javafx,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

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**
         }

    }

这里有两个选项:

  • 创建一个样式表,并在那里描述正确的选择器
  • 找到子节点并直接将样式应用于它
  • 不建议使用No 2,因为您无法保证控件何时实际实例化该子节点。TornadoFX有两种做第一的方法

    您可以创建类型安全样式表,并将其引用添加到应用程序类中。样式表如下所示:

    class Styles : Stylesheet() {
        init {
            textArea {
                content {
                    backgroundColor += Color.BLUE
                }
            }
        }
    }
    
    正如我提到的,TornadoFX中还有另一个选项,那就是创建一个内联样式表。这不是一个内联样式,而是一个完整的样式表,它将只应用于定义它的节点(当然还有它的子节点)

    注意,您需要引用样式表中定义的CSS类


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

    如果在JavaFx遗留应用程序(不是从tornadoFx.app派生的)中使用TornadFX,则样式表类选项不可能,是吗?在这种情况下,我还没有找到注册样式表类的方法。你应该可以调用FX.importStylesheet()嗯……也许我忽略了某个东西,但是如何获得FX的实例呢?我可以访问伴生对象,但importStylesheet函数不是静态的…样式表属性是可访问的,我复制了importStylesheet函数以注册基于dsl的样式表,但该功能不起作用(在运行时忽略了样式表)
    textarea {
        prefWidth = 900.0
        prefHeight = 700.0
        stylesheet {
            Stylesheet.content {
                backgroundColor += Color.BLUE
            }
        }
    }