JavaFX TextFlow 设置缺省文本颜色



作为标题,是否可以将默认颜色应用于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 是另一个组件,但为什么我不能从它的父级设置它的样式?

好吧,你不能用Text这样做,因为如果你查看JavaFX CSS参考指南,它的样式类没有填充CSS规则。所以我建议离开Text并使用Label。如果你这样做,那么你可以使用下面的css规则:

#supertextflow > .label {
-fx-text-fill: blue;
-fx-font-size : 20px;
}

如果你想继续使用文本,你必须在FlowPane中的每个元素(文本)中设置一个特定的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;
}

最新更新