在javafx标签中将特定单词设为斜体
Make Specific word italic in javafx label
我想在我的标签中将一个特定的词设为斜体,但我找不到任何解决方案,我到处寻找并尝试了很多不同的方法。
Label reference = new Label(lastNameText + ", " + firstNameText + ". (" + yearText + "). "
+ titleOfArticleText + ". " + titleOfJournalText + ", "
+ volumeText + ", " + pageNumbersText + ". " + doiText);
背景信息 - 我希望 "titleOfJournalText" 是斜体,其余的只是简单的,顺便说一句,它们都是字符串,曾经在它们自己的文本字段中出现过
对于给定的标签,标准标签文本只能有一种样式。
但是您可以使用 TextFlow 轻松混合文本样式。通常您可以直接引用 TextFlow 而无需将其放在封闭的标签中。
如果您愿意,您仍然可以将 TextFlow 放置在标签中,方法是将 TextFlow 设置为标签的图形。请注意,当您执行此操作时,标签的内置省略功能(如果没有足够的 space 来显示标签,标签文本将被截断为点)将不适用于 TextFlow。
这是一个参考了爱因斯坦狭义相对论的小示例程序。
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);
}
}
我想在我的标签中将一个特定的词设为斜体,但我找不到任何解决方案,我到处寻找并尝试了很多不同的方法。
Label reference = new Label(lastNameText + ", " + firstNameText + ". (" + yearText + "). "
+ titleOfArticleText + ". " + titleOfJournalText + ", "
+ volumeText + ", " + pageNumbersText + ". " + doiText);
背景信息 - 我希望 "titleOfJournalText" 是斜体,其余的只是简单的,顺便说一句,它们都是字符串,曾经在它们自己的文本字段中出现过
对于给定的标签,标准标签文本只能有一种样式。
但是您可以使用 TextFlow 轻松混合文本样式。通常您可以直接引用 TextFlow 而无需将其放在封闭的标签中。
如果您愿意,您仍然可以将 TextFlow 放置在标签中,方法是将 TextFlow 设置为标签的图形。请注意,当您执行此操作时,标签的内置省略功能(如果没有足够的 space 来显示标签,标签文本将被截断为点)将不适用于 TextFlow。
这是一个参考了爱因斯坦狭义相对论的小示例程序。
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);
}
}