在JAVAFX中扩展CSS样式

时间:2017-04-09 17:59:17

标签: css javafx

我正在尝试在JAVAFX应用程序中使用CSS。 CSS文件中有一种方法可以使用某种继承吗? 例如,我有一种称为“红线”的样式:

.redline{
    -fx-stroke:red;
    -fx-stroke-width:5px;
}

我可以创建第二个样式“greenline”:

.greenline{
    -fx-stroke:green;
}

以某种方式继承自“红线”。比如说:

greenline extends redline

这样“绿色”线的笔画宽度为5px? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

您需要制作一个更具体的选择器。你可以,例如添加样式类:

将样式类line添加到所有行,然后将redblue样式类添加到应该获得这些颜色的行。

实施例

Java代码

Line redLine = ...
redLine.getStyleClass().add("line");
Line blueLine = ...
blueLine.getStyleClass().add("line");
Line blackLine = ...
blackLine.getStyleClass().add("line");

// add color related classes
redLine.getStyleClass().add("red");
blueLine.getStyleClass().add("blue");

...

CSS

.line {
    -fx-stroke: black; /* define standard line color */
    -fx-stroke-width: 5px;
}

.line.blue { /* rules for nodes that have style classes line AND blue */
    -fx-stroke: blue;
}

.line.red { /* rules for nodes that have style classes line AND red */
    -fx-stroke: red;
}

在CSS中,更具体的规则将始终覆盖不太具体的规则的属性。在这种情况下,.line不如.line.blue.line.red具体,因为前一个选择器只包含一个类而不是2个。

注意: CSS中有继承,但属性是从场景中的父级继承的,而不是从java代码中的基类继承的。