gpt4 book ai didi

javafx-8 - GridPane、VBox、VBox 的 JavaFX CSS 类

转载 作者:行者123 更新时间:2023-12-05 00:24:19 30 4
gpt4 key购买 nike

JavaFX GridPane、VBox、HBox 是否有预定义的 CSS 类?
我在 CSS reference 中找不到任何内容,但默认组件没有定义似乎很奇怪。

如果没有预定义的类,有没有比在所有网格上手动添加类更好的方法:

GridPane pane = new GridPane();
pane.getStyleClass().add("grid-pane");

最佳答案

不,只有 Control子类定义了默认的 css 类。我认为这是因为想要管理自己的图形(例如,使用 Canvas 或非托管形状)的应用程序可能不会使用 css,但可能仍会使用这些布局 Pane 。由于将 css 应用于场景图的成本很高,因此不一定需要它们的节点没有样式类。

除了您展示的那样,我认为没有任何方法可以将样式类添加到 Pane 中。显然,如果你需要很多 GridPane s 具有相同的样式类,您可以只定义一个方法来避免重复代码:

private GridPane createGridPane() {
GridPane grid = new GridPane();
grid.getStyleClass().add("grid-pane");
return grid ;
}

更新

请注意,就像在基于 HTML 的 CSS 中一样,您可以使用基于类型的选择器以及基于样式类的选择器,如 documentation 中所述。 .任何节点的默认样式类都是其简单的类名。因此,您可以通过类型选择器选择网格 Pane :

GridPane {
/* styles ... */
}

这对我来说有点脆弱:特别是如果你子类化 GridPane ,选择器将不再适用,从面向对象的角度来看,这是非常违反直觉的。我建议在类型选择器上使用样式类。

另请注意,如果您想更改整个应用程序(或只是场景图的子图)的配色方案,这可能是最常见的用例,您可以简单地定义一些标准外观的值-颜色。例如:

.root {
-fx-base: #bfe7ff;
-fx-accent: #0096c9 ;
-fx-default-button: #abd8ed ;
-fx-focus-color: #039ed3;
-fx-faint-focus-color: #039ed322;
-fx-focused-text-base-color : ladder(
-fx-selection-bar,
-fx-light-text-color 45%,
-fx-dark-text-color 46%,
-fx-dark-text-color 59%,
-fx-mid-text-color 60%
);
-fx-focused-mark-color : -fx-focused-text-base-color ;

-fx-font-family: verdana;
}

将“蓝色主题”应用于整个应用程序,将默认为“继承”的查找颜色和属性传播到所有子节点。

关于javafx-8 - GridPane、VBox、VBox 的 JavaFX CSS 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26456560/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com