2

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

4

1 回答 1

3

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

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

如果您想继续使用 Text,您必须为 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;
}
于 2017-11-29T22:00:41.017 回答