是否可以在 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/