我正在尝试在JAVAFX应用程序中使用CSS。 CSS文件中有一种方法可以使用某种继承吗? 例如,我有一种称为“红线”的样式:
.redline{
-fx-stroke:red;
-fx-stroke-width:5px;
}
我可以创建第二个样式“greenline”:
.greenline{
-fx-stroke:green;
}
以某种方式继承自“红线”。比如说:
greenline extends redline
这样“绿色”线的笔画宽度为5px? 提前谢谢!
答案 0 :(得分:1)
您需要制作一个更具体的选择器。你可以,例如添加样式类:
将样式类line
添加到所有行,然后将red
或blue
样式类添加到应该获得这些颜色的行。
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");
...
.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代码中的基类继承的。