在JavaFx标签或文本中将文本的一部分加粗

Nei*_*eil 31 javafx javafx-2

在我的JavaFx应用程序中,我需要在整个句子中用粗体字表示一两个字.目前,句子呈现为JavaFx标签,但升级组件也不允许我将文本设置为以便我可以将单词"Sample"以粗体显示.

String s = "This is a <b>Sample</b> sentence"
Label label = new Label(s);
Run Code Online (Sandbox Code Playgroud)

产量

This is a Sample sentence

JavaFx Text也不允许这样做.是否有任何组件,我可以用粗体表示部分文本?

我不确定JavaFx WebView是否适合在窗口中渲染许多小句子.

小智 50

可以使用TextFlowJavaFX8中的容器.然后,您可以轻松地在其中添加不同样式的Text节点.

TextFlow flow = new TextFlow();

Text text1=new Text("Some Text");
text1.setStyle("-fx-font-weight: bold");

Text text2=new Text("Some Text");
text2.setStyle("-fx-font-weight: regular");

flow.getChildren().addAll(text1, text2);
Run Code Online (Sandbox Code Playgroud)

TextFlow容器将自动包装内容Text节点.

在此输入图像描述


Ser*_*nev 10

更新: JavaFX 8为富文本提供了新的控件:TextFlow


不幸的是,2.2中没有这样的功能,尽管它可能包含在下一个版本中.

现在您可以尝试使用下一种方法:

  1. HBox有几个LabelText组件
  2. 的WebView
  3. 绘制了几个Text组件的画布


Mar*_*ger 7

由于之前的答案不包括FXML代码,我将另外发布一个.

正如@Ernisto所建议的那样,您可以使用包含Text部分的TextFlow,其中每个部分的样式可以不同.

示例FXML文件内容:

<TextFlow>
  <Text text="Normal text and "/>
  <Text text="bold text and " style="-fx-font-weight: bold"/>
  <Text text="italic text and " style="-fx-font-style: italic"/>
  <Text text="red text." style="-fx-stroke: red"/>
</TextFlow>
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述