【问题标题】:Javafx style - inheritance not working intuitively, -fx-text-fill not workingJavafx 风格 - 继承不能直观地工作,-fx-text-fill 不能工作
【发布时间】:2019-10-31 10:20:12
【问题描述】:

我是 JavaFX 新手,对样式感到困惑。我正在使用 OpenJFX 13.0.1。我有以下简单的场景:

val oscs = HBox()
val osc1 = VBox()
val title = Text("Osc 1")
title.styleClass.add("text")
osc1.children.add(title)
oscs.children.add(osc1)

val root = BorderPane()
root.children.add(oscs)
val scene = Scene(root, 500.0,  400.0)

我有两个问题:

  1. -fx-text-fill 无法为文本着色,而-fx-fill 可以。 IE。

    .text {
        -fx-fill: #44FFFF;
    }
    

    有效,而:

    .text {
        -fx-text-fill: #44FFFF;
    }
    

    没有。根据文档,这似乎是错误的。

  2. 继承没有像我预期的那样工作。子节点不应该从根继承吗?

    无论是-fx-fill 还是-fx-text-fill,以下内容都无法为标签着色。

    .root {
        -fx-font-size: 24px;
        -fx-font-family: sans-serif;
        -fx-fill: #44FFFF;  
        -fx-background-color: #000000;
        -fx-border-color: #44FF00;
        -fx-border-width: 2px;
    }
    

我做错了什么?

【问题讨论】:

    标签: css javafx openjfx


    【解决方案1】:

    您可能对LabelText 感到困惑。

    TextShape 的子类,不提供-fx-text-fill 属性。此外,Shape-fx-fill 属性不会被继承。见CSS Reference Guide

    除了使用Label,您还可以使用后代选择器来分配填充:

    .root .text {
        -fx-fill: #44FFFF;  
    }
    

    编辑:

    Label-fx-text-fill 也没有被继承。您应该能够通过将inherit 指定为-fx-text-fill-fx-fill 属性的值来解决这两种情况。以下应该适用于Text

    .root {
        -fx-fill: #44FFFF;
        -fx-background-color: #000000;
    }
    
    .text {
        -fx-fill: inherit;
    }
    

    【讨论】:

    • 谢谢(我混淆了标签/文本),但这没有帮助。标签也不接受-fx-text-fill。我之前的单独规则或您的后代选择器完全符合更改小部件颜色的要求,并且将其包含在 .root 中不起作用。 FWIW 我对那个样式页面很熟悉,但就布局而言,这简直是一场噩梦。有没有人做一个更消耗的?将堆栈向上递归 3 或 4 级并试图将您阅读的内容记住 4 级并不是一种愉快的阅读体验。
    • 抱歉,参考文献看起来也不够好...Labeled 默认将-fx-text-fill 指定为black,而不是继承...您需要通过指定来解决此问题继承的属性。至于查找要查找的内容:您可以使用以下代码找出在哪里搜索属性:CssMetaData d = title.getCssMetaData().stream().filter(s -> s.getProperty().equals("-fx-text-fill")).findFirst().orElse(null); System.out.println(d); System.out.println(d.getClass());。假设该类是匿名类,您将通过类名找到实现位置。
    • 但实际上文档在这方面做得并不好,通常您需要查看皮肤或modena.css 以找出通过 css 设置节点样式的正确方法...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多