如何为 JavaFX(Java 17、OpenJFX)设置自定义字体?我尝试将文件复制到 resources/fonts 文件夹并通过 CSS 中的 @font-face 导入它们。它不起作用。还尝试了@import - 没有用。
最佳答案
在互联网上搜索了几个小时后,终于解决了如何在 JavaFX 中设置自定义字体并在 CSS 中舒适地使用它。
CSS 文件如下所示:
@font-face
{
-fx-font-family: "Quicksand Light";
src: url("../fonts/Quicksand-Light.ttf");
}
@font-face
{
-fx-font-family: "Quicksand Regular";
src: url("../fonts/Quicksand-Regular.ttf");
}
@font-face
{
-fx-font-family: "Quicksand Medium";
src: url("../fonts/Quicksand-Medium.ttf");
}
@font-face
{
-fx-font-family: "Quicksand Semi-bold";
src: url("../fonts/Quicksand-SemiBold.ttf");
}
@font-face
{
-fx-font-family: "Quicksand Bold";
src: url("../fonts/Quicksand-Bold.ttf");
}
.light
{
-fx-font-family: "Quicksand Light";
}
.regular
{
-fx-font-family: "Quicksand Regular";
}
.medium
{
-fx-font-family: "Quicksand Medium";
}
.semi
{
-fx-font-family: "Quicksand Semi-bold";
}
.bold
{
-fx-font-family: "Quicksand Bold";
}
现在,在您的 java 类中,您可以相应地设置样式,如下所示:
Label lblThin = new Label("Light");
lblThin.getStyleClass().add("light");
Label lblRegular = new Label("Regular");
lblRegular.getStyleClass().add("regular");
Label lblMedium = new Label("Medium");
lblMedium.getStyleClass().add("medium");
Label lblSemiBold = new Label("Semi Bold");
lblSemiBold.getStyleClass().add("semi");
Label lblBold = new Label("Bold");
lblBold.getStyleClass().add("bold");
需要注意的两个主要事项:
- 字体名称应与字体文件完全相同,并且是 double 的 引用
- 字体的原始文件名应保留在 你的资源
附上资源/字体照片以方便理解:
输出:
我希望这可以节省某人的时间。
关于css - JavaFX 自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70985044/