在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");
但它不起作用。
loadFont
调用放置在重写的 Application init 方法内,以确保在应用程序中发生任何事情之前它被调用。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;
}
-fx-font-size
大小。Font
并使用CSS对标签进行内联样式设置也可以正常工作:Label testControl = new Label("TRON");
testControl.setStyle("-fx-font-family: TRON; -fx-font-size: 120;");
TRON字体是从dafont下载的,放置在CustomFontTest类所在的同一目录中,并由构建系统复制到构建输出目录中。
答案摘自我在"使用自定义字体"论坛帖子中的回答。
你离解决方案很近:
-fx-font-family: 'Helvetica', Arial, sans-serif;
尝试这个,它应该可以正常工作。
也许这可以帮助你?(我不是JavaFX专家)
https://forums.oracle.com/forums/thread.jspa?messageID=10107625
编辑:
加载您的字体:
@font-face {
font-family: Delicious;
src: url('Delicious-Roman.otf');
}
使用 -fx-
标签来设置字体:
-fx-font-family: 'Delicious';
@Font-face
加载字体,然后在 -fx-font-family
中放置您的字体名称。 - Andrea Turri@font-face
,以使其正常工作! - smac89刚刚发现一个细节: 在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;
}
@FXML
private Label myLabel;
@Override
public void initialize(URL arg0, ResourceBundle arg1){
Font myFont = null;
try {
myFont = Font.loadFont(new FileInputStream(new File("patch_to_font.ttf")), 10);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
myLabel.setFont(myFont);
}
JavaFx CSS字体(导入.ttf文件):
/* import fonts */
@font-face {
font-family: "Open Sans";
font-style: normal;
font-weight: 400;
src: url("/fonts/OpenSans-Regular.ttf");
}
@font-face {
font-family: "Open Sans Light";
font-style: normal;
font-weight: 300;
src: url("/fonts/OpenSans-Light.ttf");
}
@font-face {
font-family: "Open Sans Bold";
font-style: normal;
font-weight: 700;
src: url("/fonts/OpenSans-Bold.ttf");
}
@font-face {
font-family: "Open Sans ExtraBold";
font-style: normal;
font-weight: 900;
src: url("/fonts/OpenSans-ExtraBold.ttf");
}
/* Set fonts */
.settings-name{
-fx-font-size: 33px;
-fx-font-family: "Open Sans Light";
-fx-font-weight: 300;
-fx-text-fill: #09f;
}
.settings-username{
-fx-font-size: 19px;
-fx-font-family: "Open Sans ExtraBold";
-fx-font-weight: 900;
-fx-text-fill: #09f;
}
Font.loadFont(getClass().getResourceAsStream("TRON.TTF"), 10);
让它工作了。 :) - Keith OYS