让一个节点忽略 CSS class 条目

Have one node ignore a CSS class entry

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

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

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

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

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

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

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

由于似乎只有少数选定的标签没有那种样式,您可以在这些标签上覆盖它:

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

Label otherLbl = ...
otherLabel.getStyleClass().add("label-override);

有多种方法可以做到这一点。此处描述的方法很少:

  • 定义一个不同的 style-class 而不是使用默认的 .label 并在 99% 的标签上使用它。

代码:

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

CSS :

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

代码:

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