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

2022-09-03 17:07:57

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

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

字体真棒 javafx

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

谢谢。


答案 1

我通过改编Jens Deters的方法实现了使用FA Icons。

他的例程针对动态 gui 组合,反对 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);
    }
}

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

  1. 导入:

    <?import de.jensd.fx.fontawesome.AwesomeIcon?>
    
  2. 节点:

    <Label styleClass="awesome"
           style="-fx-font-family: FontAwesome; -fx-font-size: 16.0;">
        <text><AwesomeIcon fx:constant="FILE"/></text>
    </Label>
    

我最终实现了一个图标小部件/控件/组件,用于恢复具有两个属性的代码量:

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

新代码(效果相同):

<Icon value="FILE" size="16"/>

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


答案 2

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


推荐