使用JavaFX显示FontAwesome图标

时间:2017-07-08 00:48:06

标签: java css javafx font-awesome

我正在尝试创建一个可以加载FontAwesome图标但却无法读取fontawesome-webfont.ttf文件的类。

用于创建图标的类:

import javafx.scene.control.Label;
import javafx.scene.text.Font;

public class AppFont {
    static {
        Font.loadFont(AppFont.class.getResource("/res/fontawesome-webfont.ttf").toExternalForm(), 10);
    }

    public static Label createIcon(Icon icon, int iconSize) {
        Label label = new Label(icon.toString());
        label.setStyle("-fx-font-family: FontAwesome; -fx-font-size: " + iconSize + ";");
        return label;
    }
}

图标枚举:

public enum Icon {

    TEST('\uf099');

    private Character c;

    private Icon(Character c) {
        this.c = c;
    }

    public Character getCharacter() {
        return c;
    }

    @Override
    public String toString() {
        return c.toString();
    }
}

用法:

Label l = AppFont.createIcon(Icon.TEST, 40);
this.getChildren().add(l);

我得到了什么

Only the black rectangle

当然.ttf文件位于正确的位置。它不会抛出任何错误。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

确保将protected void ensureObj(Object object) { if (!this.field.getDeclaringClass().isAssignableFrom(object.getClass())) { this.throwSetIllegalArgumentException(object); } } 设置为所加载字体的正确名称。一旦使用正确的代码,我就会使用-fx-font-family:Font Awesome 5 Pro Regular'