【问题标题】:Can't set custom font无法设置自定义字体
【发布时间】:2016-11-07 22:47:52
【问题描述】:

我正在开发一个 JavaFX 项目。我想在 CSS 文件中的 Label 上使用自定义字体。我已经阅读并关注了例如。 this 发帖。

public class Main extends Application {
    @Override
    public void init() {
        Font font = Font.loadFont(getClass().getResourceAsStream("Dimitri_Swank.ttf"), 32);
        System.out.println(font);
    }
    @Override
    public void start(Stage primaryStage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("Window.fxml"));
        // ...
    }
}

打印Font[name=Dimitri Swank, family=Dimitri Swank, style=Regular, size=32.0],这样字体就加载成功了。 FXML文件中的根容器有一个stylesheets="@Window.css"属性,而在这个CSS文件中,有一条规则:

#gameName {
    -fx-font-family: Dimitri Swank;
    -fx-font-size: 32px;
}

选择器效果很好(它指的是Label),如果我更改-fx-font-size,我可以看到区别。但是字体系列仍然是默认的系统字体。我做错了什么?

【问题讨论】:

  • 在您链接的帖子的答案中,我看到他们的 -fx-font-family 用引号括起来,您是否尝试过 -fx-font-family:'Dimitri Swank';
  • @MichaelPickett 哈哈,这很简单,它解决了问题,谢谢。

标签: java javafx fonts javafx-css


【解决方案1】:

JavaFX version 1.8u60 开始,您可以使用纯 css 加载字体,但请注意您需要使用 Font File 的原始名称,例如:

@font-face{
    src: url("../fonts/Younger than me Bold.ttf");
}

.button{
  -fx-background-color:white;
  -fx-background-radius:15.0;
  -fx-font-size:18.0;
  -fx-font-family:"Younger than me";
  -fx-text-fill:black;
  -fx-font-weight:bold;  
}

使用默认编辑器打开 .ttf 可以找到原始名称,如果您不知道,请查看它的名称。

完整教程:http://www.guigarage.com/2014/10/integrate-custom-fonts-javafx-application-using-css/

你的情况也看这里:Specifying external font in JavaFX CSS


最后:

您的代码中的问题是,在 css 中您没有在 font - family 周围添加双引号 " 或单引号 '

【讨论】:

  • 谢谢,我明天看看这个。
猜你喜欢
  • 2014-06-16
  • 2021-06-03
  • 1970-01-01
  • 2012-11-22
  • 2014-09-11
  • 1970-01-01
  • 2015-11-17
  • 2015-04-01
  • 2013-07-09
相关资源
最近更新 更多