作为标题,可以将默认颜色应用于TextFlow组件的所有文本吗?
TextFlow textFlow = new TextFlow();
textFlow.setId("supertextflow");
// Somewhere else in the code
textFlow.getChildren()
.add(new Text("Dynamic added text! OMG!"));
我尝试了不同的解决方案,但没有一个工作
#supertextflow {
-fx-text-fill: red;
}
#supertextflow * .text{
-fx-fill: red;
}
#supertextflow > * > .text {
-fx-fill: red;
}
我知道Text是另一个组件,但为什么我不能从它的父级设置它?
答案 0 :(得分:1)
嗯,你不能用Text
做到这一点,因为如果你查看JavaFX CSS Reference Guide,它的样式类没有填充css规则。因此,我建议您离开Text
并使用Label
代替。如果你这样做,你可以使用下面的css规则:
#supertextflow > .label {
-fx-text-fill: blue;
-fx-font-size : 20px;
}
如果您想继续使用Text,您必须将FlowPane中的每个元素(Text)设置为特定的id(例如#customText),然后使用它来设置CSS规则,如下所示:
#supertextflow > #customText {
-fx-fill: red;
-fx-font-size : 20px;
}
编辑:正如James_D在下面的评论中所提到的,你应该在CSS规则上使用类型选择器(我猜这是正确的术语)以便设置所有的样式TextFlow
内的文本节点无需在其上设置任何ID:
#supertextflow > Text {
-fx-fill: red;
-fx-font-size : 20px;
}