在css中设置JavaFX .root样式

时间:2016-01-13 12:01:55

标签: css javafx scenebuilder

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

我的css-File看起来像这样:
Application.css

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

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

我的Application.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>

现在我在我的窗格中添加了Text-Element或Label-Element,字体不会受到根节点的影响。但是如果我在我的窗格中添加一个Button-Element,则会应用.button的样式。
我预计.root节点会影响任何其他元素的样式。像在这个回答的问题,但它不起作用: Set Font globally in JavaFX
任何人都可以解释我做错了什么?

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

-fx-font: 14px Arial;

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

1 个答案:

答案 0 :(得分:4)

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

容器控件没有属性-fx-font。所以当你定义:

.root {
    -fx-font: 14px Arial;
}
它根本没有效果。

如果要设置所有子控件的字体,您应该这样做:

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

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

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

或该应用程序的所有标签:

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