无法设置自定义字体

时间:2016-11-07 22:47:53

标签: java javafx fonts javafx-css

我正在开发一个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,我可以看到区别。但字体系列仍然是默认的系统字体。我做错了什么?

1 个答案:

答案 0 :(得分:0)

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