2016-11-07 104 views
1

我正在使用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。但是字体系列仍然是默认的系统字体。我究竟做错了什么?

+0

在你的链接文章的答案中,我看到他们有'-fx-font-family'引号,你是否尝试过'-fx-font-family:'Dimitri Swank';'? –

+0

@MichaelPickett哈哈,这很容易,它解决了这个问题,谢谢。 – klenium

回答

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

+0

谢谢,明天我会看看这种方式。 – klenium

+0

@klenium;)https://youtu.be/p_o5F3x-Rnc?t=763 – GOXR3PLUS