是否可以在JavaFX应用程序中使用CSS指定字体?我有一个FXML场景和相应的CSS文件.在Java代码中,可以使用以下setFont方法指定字体:
text.setFont(Font.loadFont("file:resources/fonts/SourceSansPro-Bold.ttf", 12));
Run Code Online (Sandbox Code Playgroud)
我试过不同的结构,比如:
-fx-font-family: url("../fonts/SourceSansPro-Bold.ttf");
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
jew*_*sea 19
我使用应用程序代码和CSS的组合来通过外部字体进行样式化.
我将loadFont调用放在一个重写的Application init方法中,以确保在应用程序中发生任何事情之前调用它.
Font.loadFont(CustomFontTest.class.getResource("TRON.TTF").toExternalForm(), 10);
Run Code Online (Sandbox Code Playgroud)
要使用该字体,我在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;
}
Run Code Online (Sandbox Code Playgroud)
很好,CSS可以很好地调整字体大小.即使字体加载大小为10,字体也会正确调整为CSS -fx-font-size规范中指定的大小.
通过CSS使用Font在应用程序初始化期间加载的标签的内联样式也可以正常工作:
Label testControl = new Label("TRON");
testControl.setStyle("-fx-font-family: TRON; -fx-font-size: 120;");
Run Code Online (Sandbox Code Playgroud)
所述TRON字体从dafont下载并通过构建系统放置在相同的目录中CustomFontTest类和复制到生成输出目录.
答案从我的答案复制到"使用自定义字体"论坛帖子.
And*_*rri 14
你接近解决方案:
-fx-font-family: 'Helvetica', Arial, sans-serif;
Run Code Online (Sandbox Code Playgroud)
试试这个,它应该工作正常.
也许这有用吗?(我不是JavaFX的专家)
https://forums.oracle.com/forums/thread.jspa?messageID=10107625
编辑:
加载你的字体:
@font-face {
font-family: Delicious;
src: url('Delicious-Roman.otf');
}
Run Code Online (Sandbox Code Playgroud)
使用您的字体-fx-:
-fx-font-family: 'Delicious';
Run Code Online (Sandbox Code Playgroud)
刚刚发现了一个更多细节:在 JavaFX-8 中,如果您想要相同字体的常规和粗体变体,您可以使用 @font-face 的两个实例来指定它们。然后你可以使用-fx-font-weight:bold;
@font-face {
font-family: 'Droid Sans';
src: url('DroidSans.ttf');
}
@font-face {
font-family: 'Droid Sans Bold';
src: url('DroidSans-Bold.ttf');
}
.root {
-fx-font-family: 'Droid Sans';
}
.table-row-cell:focused .text {
-fx-font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27103 次 |
| 最近记录: |