首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >适用于GridPane、VBox、VBox的JavaFX CSS类

适用于GridPane、VBox、VBox的JavaFX CSS类
EN

Stack Overflow用户
提问于 2014-10-20 07:32:17
回答 1查看 10.5K关注 0票数 4

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

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

代码语言:javascript
复制
GridPane pane = new GridPane();
pane.getStyleClass().add("grid-pane");
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-20 23:09:42

不,只有CSS子类定义了默认的Control类。我认为这是因为想要管理自己的图形(例如,使用画布或非托管形状)的应用程序可能不会使用css,但可能仍然会使用这些布局窗格。由于css应用于场景图的开销很大,因此不一定需要css的节点没有样式类。

我不认为有任何方法可以将样式类添加到窗格中,除非如您所示。显然,如果您需要大量具有相同样式类的GridPane,您可以只定义一个方法来避免重复的代码:

代码语言:javascript
复制
private GridPane createGridPane() {
    GridPane grid = new GridPane();
    grid.getStyleClass().add("grid-pane");
    return grid ;
}

更新

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

代码语言:javascript
复制
GridPane {
    /* styles ... */
}

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

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

代码语言:javascript
复制
.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;  
}

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26456560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档