【问题标题】:Have one node ignore a CSS class entry让一个节点忽略 CSS 类条目
【发布时间】:2016-01-26 06:41:49
【问题描述】:

所以我有以下代码片段,我想将其应用于我的 JavaFX 应用程序中 99% 的标签。但是,有时我不想应用它。不幸的是,每当我尝试打电话时

myFont.setFont(Font.loadFont(etc etc);

无法覆盖 CSS 文件中的标签类。如何才能做到这一点?谢谢!

.label
{
    -fx-font-size: 14pt;
    -fx-font-family: "Segoe UI Semibold";
}

【问题讨论】:

    标签: java css javafx fonts label


    【解决方案1】:

    有不同的方法可以做到这一点。这里描述的方法很少:

    • 定义不同的样式类,而不是使用默认的 .label,并将其用于 99% 的标签。

    代码:

    mylabel.getStyleClass().add("my-label")
    

    CSS:

    .my-label {
       -fx-font-size: 14pt;
       -fx-font-family: "Segoe UI Semibold";
    }
    
    • 删除默认的label 样式类并将新样式类设置为标签的1%。这将从节点中删除已经存在的.label 样式类。这似乎是一种更简单的方法,但如果我是你,我不会采用这种方法,因为我们

    代码:

    mylabel.getStyleClass().setAll("my-label");
    

    【讨论】:

      【解决方案2】:

      .label 是适用于所有Nodes 类型为Label 的内置样式之一。您可以像这样删除任何样式类:

      Label lbl = ...
      lbl.getStyleClass().remove("label");
      

      但是我建议另一种不涉及删除样式类的方法,尤其是其中一个内置插件。

      由于似乎只有选定的几个标签,没有该样式,您可以在这些标签上覆盖它:

      .label-override {
          -fx-font-size: 10pt;
          -fx-font-family: "Segoe UI Semibold";
      }
      
      Label otherLbl = ...
      otherLabel.getStyleClass().add("label-override);
      

      【讨论】:

      • 感谢您的解释,也找到了替代解决方案。我可以输入myLabel.getStyleClass().clear();,它会重置我节点上的所有 CSS 文档。
      • 为替代解决方案编辑了先前的评论。感谢您的帮助。
      • @hotzst 这是不正确的 - “因此您不能从特定标签中删除该样式”。更合适的声明应该是 -“因此您不应该从特定标签中删除该样式
      • @ItachiUchiha:感谢您指出这一点,我不知道这一点。相应地编辑了我的答案。
      猜你喜欢
      • 2018-04-22
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多