css - 在 JavaFX CSS 中指定外部字体

标签 css fonts javafx

是否可以在 JavaFX 应用程序中使用 CSS 指定字体?我有一个 FXML 场景和相应的 CSS 文件。在 Java 代码中,可以使用 setFont 方法指定字体:

text.setFont(Font.loadFont("file:resources/fonts/SourceSansPro-Bold.ttf", 12));

我尝试了不同的结构,例如:

-fx-font-family: url("../fonts/SourceSansPro-Bold.ttf");

但它不起作用。

最佳答案

我结合应用程序代码和 CSS 通过外部字体设置样式。

我将 loadFont 调用放在重写的应用程序初始化方法中,以确保在应用程序中发生任何事情之前调用它。

Font.loadFont(CustomFontTest.class.getResource("TRON.TTF").toExternalForm(), 10);

为了使用字体,我在 CSS 中按字体系列引用字体:

.menu-bar {
    -fx-background-color: transparent;
    -fx-font-family: TRON;
    -fx-font-size: 40px;
}

.context-menu {
    -fx-font-family: TRON;
    -fx-background-color: transparent;
    -fx-font-size: 12px;
}

很高兴 CSS 可以很好地调整字体大小。 即使以 10 号加载字体,字体也会正确调整为 CSS -fx-font-size 规范中指定的大小。

使用在应用程序初始化期间加载的 Font 通过 CSS 对标签进行内联样式设置也可以正常工作:

Label testControl = new Label("TRON");
testControl.setStyle("-fx-font-family: TRON; -fx-font-size: 120;");

TRON font从 dafont 下载并放置在与 CustomFontTest 类相同的目录中,并由构建系统复制到构建输出目录。

答案是从我对 "Using Custom Fonts" 上论坛帖子的回答中复制的.

关于css - 在 JavaFX CSS 中指定外部字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12173288/

相关文章:

没有图标的 JavaFX 对话框

javascript - 强制地址栏显示在移动版 Chrome 应用中

javascript - jQuery 悬停淡出 p 标签并淡入另一个标签

Apache FOP - 不接受自定义字体

vue.js - 如何将 Vuetify 中所有项目的字体从 Roboto 更改为另一个

python - 尝试使用 Matplotlib 设置绘图字体时出错

JavaFX LineChart 在高值处显示空白

javascript - 如何在div中存储下拉选择的值

css - 提交按钮透明但不是文字

Java 无法识别一台计算机上日志文件中的换行符\n