是否有一个预定义的CSS类用于JavaFX GridPane、VBox、HBox?我在CSS reference中找不到任何东西,但似乎很奇怪,默认组件没有定义一个。
如果没有预定义的类,有没有比在所有网格上手动添加类更好的方法:
GridPane pane = new GridPane();
pane.getStyleClass().add("grid-pane");发布于 2014-10-20 23:09:42
不,只有CSS子类定义了默认的Control类。我认为这是因为想要管理自己的图形(例如,使用画布或非托管形状)的应用程序可能不会使用css,但可能仍然会使用这些布局窗格。由于css应用于场景图的开销很大,因此不一定需要css的节点没有样式类。
我不认为有任何方法可以将样式类添加到窗格中,除非如您所示。显然,如果您需要大量具有相同样式类的GridPane,您可以只定义一个方法来避免重复的代码:
private GridPane createGridPane() {
GridPane grid = new GridPane();
grid.getStyleClass().add("grid-pane");
return grid ;
}更新
请注意,正如在基于HTML的CSS中一样,您可以使用基于类型的选择器,也可以使用基于样式类的选择器,如documentation中所述。任何节点的默认样式类都是其简单的类名。因此,您可以通过类型选择器选择网格窗格:
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;
}将“蓝色主题”应用于整个应用程序,将默认为“继承”的查找颜色和属性传播到所有子节点。
https://stackoverflow.com/questions/26456560
复制相似问题