15

在 Swing 中,使用 HTML 为 JLabel 设置样式非常容易 - 您只需使用所需的 HTML 作为标签的文本,然后适当地呈现它。

setStyle()在 JavaFX 中这是不可用的,但我们可以使用该方法设置特定标签(或一般节点)的样式。

但是,使用这种方法,如何将标签的一部分设置为某种样式并不明显,例如相当于:

JLabel label = new JLabel("<html>Part of this <b>text is b</b>old and part isn't.</html>");

实现上述目标的最简单方法是什么?

4

2 回答 2

10

您可以尝试使用 TextFlow 组合不同样式的文本节点,例如

TextFlow textFlow = new TextFlow();

Text first=new Text("Part of this ");
first.setStyle("-fx-font-weight: regular");

Text second=new Text("text is b");
second.setStyle("-fx-font-weight: bold");

Text third=new Text("old and part isn't.");
third.setStyle("-fx-font-weight: regular");

textFlow.getChildren().addAll(first, second, third);
于 2015-12-11T18:58:55.833 回答
8

伪选择器可能是一种解决方法,但不幸的是,它们中的大多数还不支持 - http://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html#introlimitations。至于控件中的富文本支持,它们将由 JavaFX8 - https://bugs.openjdk.java.net/browse/JDK-8091709提供。

于 2012-10-02T18:32:26.020 回答