JavaFX TextFlow 设置默认文本颜色
JavaFX TextFlow set default text color
如标题,是否可以将默认颜色应用于 TextFlow 组件的所有文本?
TextFlow textFlow = new TextFlow();
textFlow.setId("supertextflow");
// Somewhere else in the code
textFlow.getChildren()
.add(new Text("Dynamic added text! OMG!"));
我尝试了不同的解决方案,但 none 有效
#supertextflow {
-fx-text-fill: red;
}
#supertextflow * .text{
-fx-fill: red;
}
#supertextflow > * > .text {
-fx-fill: red;
}
我知道 Text 是另一个组件,但为什么我不能根据它设置样式 parent?
你不能用 Text
做到这一点,因为如果你查看 JavaFX CSS Reference Guide,它的样式 class 没有填充 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 你应该使用 Type Selector (我猜这是正确的term) 在 CSS 规则上,以便在 TextFlow
中设置所有文本节点的样式,而无需在它们上设置任何 ids :
#supertextflow > Text {
-fx-fill: red;
-fx-font-size : 20px;
}
如标题,是否可以将默认颜色应用于 TextFlow 组件的所有文本?
TextFlow textFlow = new TextFlow();
textFlow.setId("supertextflow");
// Somewhere else in the code
textFlow.getChildren()
.add(new Text("Dynamic added text! OMG!"));
我尝试了不同的解决方案,但 none 有效
#supertextflow {
-fx-text-fill: red;
}
#supertextflow * .text{
-fx-fill: red;
}
#supertextflow > * > .text {
-fx-fill: red;
}
我知道 Text 是另一个组件,但为什么我不能根据它设置样式 parent?
你不能用 Text
做到这一点,因为如果你查看 JavaFX CSS Reference Guide,它的样式 class 没有填充 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 你应该使用 Type Selector (我猜这是正确的term) 在 CSS 规则上,以便在 TextFlow
中设置所有文本节点的样式,而无需在它们上设置任何 ids :
#supertextflow > Text {
-fx-fill: red;
-fx-font-size : 20px;
}