如何使用CSS在JavaFX Scene Builder中设置自定义字体

cor*_*ico 2 css fonts javafx scenebuilder

我正在JavaFX Scene Builder中创建一个GUI,并希望所有文本(标签,文本字段,组合框)使用相同的字体.问题是它是一个自定义字体,可能不会在每个客户端的计算机上.

我试过CSS:

@font-face {
   font-family: DIN;
   src: url(DIN.tff);
}

.text {
   -fx-font-family: DIN;
   -fx-font-style: bold;
}
Run Code Online (Sandbox Code Playgroud)

将上述代码保存到文件Font.css并尝试通过Scene Builder的JavaFX CSS字段将其应用于每个GUI元素,但它不起作用.

我在CSS中犯了错误吗?或者有更好的方法来解决这个问题吗?如果我不需要,我宁愿不必加载字体并为Java代码本身的每个元素设置它.

小智 9

确保用于Font.loadFont在应用程序启动时实际加载字体.然后你应该能够使用CSS中的字体.小心使用字体的名称,而不是字体文件的名称.这是一个常见的错误.

我之前使用了以下内容来加载和使用自定义字体:

Font.loadFont(getClass().getResourceAsStream("/resources/fonts/marck.ttf"), 14);
Run Code Online (Sandbox Code Playgroud)

和:

-fx-font-family: "Marck Script";
Run Code Online (Sandbox Code Playgroud)

仅供参考:仅当名称包含空格时才需要引号.

  • 快速提示:加载字体时,请通过getName()检查名称,以便准确添加预期名称.有时它不仅仅是字体名称. (3认同)
  • 非常感谢!做到了!字体系列的名称必须与 .ttf 文件中的名称完全相同。 (2认同)