在 CSS 中设置 JavaFX .root 样式



我想最初通过css文件将几种样式(字体,字体大小)应用于我的组件。
(我正在使用甲骨文中的SceneBuilder 2.0
所以我将我的 css 文件添加到顶部组件。

我的css文件看起来像这样:
应用.css

.root {
    -fx-font: 14px Arial;
}
.button {
    -fx-font: 28px Arial;
}

我的应用程序.fxml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="240.0" prefWidth="320.0" stylesheets="@Application.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
   <children>
      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="MyText" />
      <Label text="MyLabel" />
      <Button mnemonicParsing="false" text="MyButton" />
   </children>
</VBox>

现在我向我的窗格添加了文本元素或标签元素,字体不受根节点的影响。但是,如果我将按钮元素添加到我的窗格中,则会应用 .button 的样式。
我预计.root节点会影响任何其他元素的样式。就像这个回答的问题一样,但它不起作用:在 JavaFX 中全局设置字体
谁能解释一下我做错了什么?

存档类似内容的唯一方法是:直接将样式设置为:

-fx-font: 14px Arial;

在我希望我可以存储在 CSS 文件中的Style下。

我删除了之前的答案。它不准确,有点令人困惑。

容器控件没有属性 -fx-font。因此,当您定义:

.root {
    -fx-font: 14px Arial;
}

它根本没有效果。

如果要为所有子控件设置字体,则应执行以下操作:

.root * {
    -fx-font: 14px Arial;
}

或者,如果只想更改容器的特定控件:

.table-view .label {
    -fx-font: 14px Arial;
}

或应用程序的所有标签:

.label {
    -fx-font: 14px Arial;
}

最新更新