css - 在 css 中设置 JavaFX .root 样式

标签 css javafx scenebuilder

我想首先通过 css 文件将多种样式(字体、字体大小)应用到我的组件。
(我正在使用 oracle 的 SceneBuilder 2.0。)
所以我将我的 css 文件添加到顶部组件。

我的 css 文件如下所示:
应用程序.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>

现在我将文本元素或标签元素添加到我的 Pane 中,字体不会受到根节点的影响。但是,如果我将 Button-Element 添加到我的 Pane ,则会应用 .button 的样式。
我预计 .root 节点会影响任何其他元素的样式。就像在这个已回答的问题中一样,但它没有用: Set Font globally in JavaFX
谁能解释我做错了什么?

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

-fx-font: 14px Arial;

Style 下,我希望我可以将其存储在一个 css 文件中。

最佳答案

我删除了我之前的回答。它不准确,而且有点困惑。

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

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

完全没有效果。

如果你想为所有子控件设置字体,你应该这样做:

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

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

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

或者应用的所有标签:

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

关于css - 在 css 中设置 JavaFX .root 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34766205/

相关文章:

css - 拒绝应用样式,因为其 MIME 类型 ('application/json' 不受支持

php - NextGEN Gallery 模板加载页面两次。?

javascript - 使用 Vue 数据包含 CSS 元素

当使用 fxml 作为 fxml 中的组件时,JavaFX FXML 没有正确地看到我的 Controller 方法 "Controller is not defined on root component"

javafx-2 - 像在场景生成器中一样实现拖放

javascript - d3 : will selection. 样式 ('font-size' ) 总是以 px 为单位返回值?

JavaFX 事件/监听器/处理程序

javafx - scenebuilder javafx 线图

java - 寻找Java方法将多个按钮图像数据捆绑在一个文件中

尽管指定了 USE_COMPUTED_SIZE,JavaFX 和 Scene Builder 仍会剪辑场景边缘