在javafx标签中使特定单词斜体

时间:2015-10-14 22:36:00

标签: java user-interface javafx label italic

我想在我的标签斜体中做一个特定的单词,但我找不到任何解决方案,我到处寻找并尝试了很多不同的方式。

 Label reference = new Label(lastNameText + ", " + firstNameText + ". (" + yearText + "). " 
                    + titleOfArticleText + ". " + titleOfJournalText + ", " 
                    + volumeText + ", " + pageNumbersText + ". " + doiText);

背景信息 - 我希望“titleOfJournalText”是斜体,其余的只是简单的,它们都是btw字符串,它们在自己的文本字段中曾经一次

1 个答案:

答案 0 :(得分:0)

标准Label文本对于给定的Label只能有一种样式。

但是,您可以使用TextFlow轻松混合文字样式。通常,您可以直接引用TextFlow,而无需将其放在封闭的Label中。

如果您希望将TextFlow设置为标签图形,仍然可以将TextFlow放置在Label中。请注意,执行此操作时,标签的内置删除功能(如果没有足够的空间显示标签,标签文本将被截断为点)将无法与TextFlow一起使用。

这是一个参考爱因斯坦狭义相对论的小样本程序。

reference

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.text.*;
import javafx.stage.Stage;

public class StyledLabel extends Application {

    public static final Font ITALIC_FONT =
            Font.font(
                    "Serif",
                    FontPosture.ITALIC,
                    Font.getDefault().getSize()
            );

    @Override
    public void start(final Stage stage) throws Exception {
        Text lastNameText = new Text("Einstein");
        Text firstNameText = new Text("Albert");
        Text yearText = new Text("1905");
        Text titleOfArticleText = new Text("Zur Elektrodynamik bewegter Körper");
        Text titleOfJournalText = new Text("Annalen der Physik");
        titleOfJournalText.setFont(ITALIC_FONT);
        Text volumeText = new Text("17");
        Text pageNumbersText = new Text("891-921");
        Text doiText = new Text("10.1002/andp.19053221004");

        Label reference = new Label(
                null,
                new TextFlow(
                        lastNameText, new Text(", "),
                        firstNameText, new Text(". ("),
                        yearText, new Text("). "),
                        titleOfArticleText, new Text(". "),
                        titleOfJournalText, new Text(", "),
                        volumeText, new Text(", "),
                        pageNumbersText, new Text(". "),
                        doiText
                )
        );

        stage.setScene(new Scene(reference));
        stage.show();
    }

    public static void main(String[] args) throws Exception {
        launch(args);
    }
}