java - 使用 JavaFX FXML 在 CSS 中设计布局 Pane 而不创建变量?

标签 java css javafx fxml scenebuilder

我正在使用 JavaFX FXML,但在使用 CSS 设计应用程序样式时遇到了一些问题。

我的根节点上有一个 GridPane,我想设置它的背景样式。 Java 代码 (@FXML) 中从未提及 GridPane 本身,因为它没有必要 - 代码中根本没有使用过它。

但是,我现在正在设计应用程序,我可以从 Oracle's Official Guide of Styling Layout Panes with CSS 获得所有信息。我必须创建一个变量,如下所示:GridPane grid = new GridPane();,然后继续为该变量分配样式,如下所示:

.grid {
    -fx-background-color: white;
    -fx-background-radius: 5.0;
    -fx-background-insets: 0.0 5.0 0.0 5.0;
    -fx-padding: 10;
    -fx-hgap: 10;
    -fx-vgap: 10;
}

然后继续向其添加样式,如下所示:grid.getStyleClass().add("grid");

这对我来说是一个不可行的解决方案,因为我在整个元素的多个场景中有多个 GridPane ,而且我不必为所有这些场景手动创建变量。

是否有类似于按钮样式的解决方案?

无需为其创建变量即可设置按钮的样式,并且它会自动设置场景中所有按钮的样式,如下所示:

.button{
    -fx-text-fill: rgb(49, 89, 23);
    -fx-border-color: rgb(49, 89, 23);
    -fx-border-radius: 5;
    -fx-padding: 3 6 6 6;
}

最佳答案

GridPane 没有自己的样式类(请参阅 CSS reference ),但与 HTML 中的标签选择器类似,Node 可以通过其 java 类进行选择:

GridPane {
    -fx-background-color: white;
    -fx-background-radius: 5.0;
    -fx-background-insets: 0.0 5.0 0.0 5.0;
    -fx-padding: 10;
    -fx-hgap: 10;
    -fx-vgap: 10;
}

此外,还可以从 FXML 添加样式类,因为 styleClassRead-Only List Property :

单个样式类的缩写形式:

<GridPane styleClass="grid">
     ...

多个样式类的长格式:

<GridPane>
     <styleClass>
          <String fx:value="grid"/>
          <String fx:value="myclass"/>
     </styleClass>
     ...

还可以从 SceneBuilder 的属性 View 添加样式类。

关于java - 使用 JavaFX FXML 在 CSS 中设计布局 Pane 而不创建变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38167498/

相关文章:

java - 保护 Java EE 网页

javascript - 如何使水平时间轴 slider 向右

java - 我应该在学习 JavaFx 之前先学习 Swing 吗?

java - Gluon Connect 在使用 Charm 依赖项进行 POST 时返回 NPE > 4.3.3

java - Java 中的 BufferedReader 和枚举多行

css - 传输后响应式导航菜单未打开

html - 创建 Ajax 菜单时出现问题

java - 将 JavaFX WebView 调整为文档正文所需的最小大小

javafx - 允许用户从 TableView 复制数据

java - 在另一台计算机上运行 Java/Selenium 程序