JavaFX TextFlow设置默认文本颜色

时间:2017-11-29 21:21:37

标签: javafx-8 javafx-css 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是另一个组件,但为什么我不能从它的父级设置它?

1 个答案:

答案 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;
}