如何在fxml项目中使用字体awesome(javafx)

use*_*316 15 java javafx javafx-2 fxml javafx-8

我想在我的项目中使用字体字体真棒,但我不知道如何在我的项目中使用字体真棒.

我找到了一些例子,但它们不能在fxml中使用.

字体真棒javafx

我需要帮助如何使用fxml在我的项目中使用它

谢谢.

Nun*_*edo 13

我通过调整Jens Deters的方法实现了使用FA图标.

他的惯用目标是反对fxml声明方式的动态组合.尽管如此,他的AwesomeIcon枚举(使用unicode字符映射FA可理解的名称)非常适合我的意图.

它应该首先在main/app类中静态加载字体:

public class App extends Application {
    static {
        Font.loadFont(App.class.getResource("/font/fontawesome-webfont.ttf").toExternalForm(), 10);
    }

    @Override
    public void start(final Stage primaryStage) throws Exception {
        URL resource = getClass().getResource("/fxml/app.fxml");
        primaryStage.setScene(new Scene((Parent) FXMLLoader.load(resource), 500, 500));
        primaryStage.setTitle("FontAwesomeFX demo");
        primaryStage.show();
    }

    public static void main(String... args){
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

不能在fxml中使用unicode字符(根据需要指定FA图标),但可以使用这些值动态设置属性.因此,有了上面提到的枚举(AwesomeIcon),工作完成了:

  1. 进口:

    <?import de.jensd.fx.fontawesome.AwesomeIcon?>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 节点:

    <Label styleClass="awesome"
           style="-fx-font-family: FontAwesome; -fx-font-size: 16.0;">
        <text><AwesomeIcon fx:constant="FILE"/></text>
    </Label>
    
    Run Code Online (Sandbox Code Playgroud)

我最终实现了一个Icon Widget/Control/Component,用于恢复具有两个属性的代码量:

  1. 值: FA图标名称;
  2. size:-fx-font-size标签上样式的可设置属性.

新代码(效果相同):

<Icon value="FILE" size="16"/>
Run Code Online (Sandbox Code Playgroud)

可以在此处找到该控件的代码.您还可以找到一个工作示例,因为它包含字体和测试代码.


ago*_*st_ 9

我认为这就是你需要ControlFX,包括字体真棒支持.请参阅javadoc以获取更多信息(但我有一天测试了它并且工作正常)


Mar*_*fer 6

我将由Mike Penz开发的Android-Iconics库移植到FX.更新将很快跟进(文档,以及)..

showcase.jar将为您提供图标的概述.

用法(需要Java 1.8):

FxIconicsLabel labelTextDefault =
                (FxIconicsLabel) new FxIconicsLabel.Builder(FxFontGoogleMaterial.Icons.gmd_folder_special)
                        .size(24)
                        .text("Right (default)")
                        .color(MaterialColor.ORANGE_500)
                        .build();
Run Code Online (Sandbox Code Playgroud)

(或参见DialogPlayGround.java)

GitHub上的FxIconics

在此输入图像描述 在此输入图像描述