在JAVAFX中扩展CSS样式

3

我试图在JAVAFX应用程序中使用CSS。在CSS文件中有没有一种方式可以利用某种继承? 例如,我有一个名为“redline”的样式:

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

我可以创建第二个名为“greenline”的样式吗?(保留HTML,不解释)
.greenline{
    -fx-stroke:green;
}

以从“redline”继承的方式。比如说:
greenline extends redline

希望让“绿色”线条的描边宽度为5px? 提前致谢!
1个回答

3

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

将样式类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 不太具体,因为前者选择器只包含一个类而不是两个。
注意:CSS中存在继承,但属性是从场景中的父级继承,而不是从Java代码中的基类继承。

非常感谢。我一直在使用方法.setStyle(),但我不知道.getStyleClass().add()。现在一切都完美了!!! - Κωνσταντίνος Παύλου

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接