用于GridPane,VBox,VBox的JavaFX CSS类
JavaFX GridPane,VBox,HBox是否有预定义的CSS类? 我找不到CSS reference中的任何东西,但它似乎很奇怪,默认组件没有定义。用于GridPane,VBox,VBox的JavaFX CSS类
如果没有一个预先定义的类,有没有更好的办法,而不是手动添加类上的所有网格:
GridPane pane = new GridPane();
pane.getStyleClass().add("grid-pane");
没有,只有Control
子类都默认CSS类定义。我认为这是因为想要管理自己的图形的应用程序(例如使用Canvas或非托管Shapes)可能不会使用css,但仍可能会使用这些布局窗格。由于应用于场景图形的css代价昂贵,因此不一定要求它们的节点不具有样式类别。
我不认为有什么方法可以将样式类添加到窗格中,而不像显示的那样。显然,如果你需要大量的GridPane
s的相同样式类,你可以定义一个方法,以避免重复代码:
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;
}
将采用“蓝色主题”整个应用程序,传播查到的颜色和属性默认为“继承”的所有子节点。
谢谢。任何想法应用CSS多昂贵?你能推荐一些阅读材料吗? :) – 2014-10-20 16:07:45
不,我不知道应用CSS是多么昂贵;有趣的是CSS开发者似乎对性能非常关注。我只是在OTN上记住[此讨论](https://community.oracle.com/thread/3570580)。请注意,如果您使用的是控件(按钮,标签等),那么无论如何都必须完成CSS传球。 – 2014-10-20 16:14:30
有趣。感谢你! – 2014-10-20 16:15:35
是的,有一种方法。只要看看这个[问题](http://*.com/questions/35290665/javafx-style-all-nodes-of-the-same-type-e-g-vbox/35291537#35291537)。 – Amin 2016-04-28 09:20:48