Nei*_*eil 5 css javafx font-face javafx-2
我已将我的应用程序的默认字体类型和大小存储在CSS文件中,我使用以下代码应用:
label.getStyleClass().add("labelStyleClass");
Run Code Online (Sandbox Code Playgroud)
但是我还添加了一个功能,如果用户提供自己的首选项,它应该覆盖默认设置(上面设置)并使用用户提供的字体大小:
double userSize = readFromFile;
label.setFont(new Font(userSize));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,label.setFont()调用不会设置用户给出的新大小.当我注释掉最初的CSS代码时,后来的工作.
任何解决方法?
注意:在JavaFX论坛上交叉发布
Ser*_*nev 10
这是设计的.出于架构原因,css的覆盖链如下:
默认caspian.css <API设置<用户的
Scenecss <用户的Parentcss <setStyle()
或者,引用css参考指南:
JavaFX CSS实现应用以下优先顺序; 来自用户代理样式表的样式的优先级低于从代码设置的值,该代码的优先级低于Scene或Parent样式表.内联样式具有最高优先级.来自Parent实例的样式表被认为比Scene样式表中的样式更具体.
因此,您可以通过使用setStyle()而不是API调用来实现目标.尝试运行下一个示例:
public void start(Stage stage) {
VBox root = new VBox(10);
Scene scene = new Scene(root, 300, 250);
// font.css: .labelStyleClass { -fx-font-size: 20 }
scene.getStylesheets().add(getClass().getResource("font.css").toExternalForm());
root.getChildren().add(LabelBuilder.create().text("default").build());
root.getChildren().add(LabelBuilder.create().text("font-css").styleClass("labelStyleClass").build());
Label lblApi = LabelBuilder.create().text("font-css-api (doesn't work)").styleClass("labelStyleClass").build();
lblApi.setFont(Font.font(lblApi.getFont().getFamily(), 40));
root.getChildren().add(lblApi);
Label lblStyle = LabelBuilder.create().text("font-css-setstyle (work)").styleClass("labelStyleClass").build();
lblStyle.setStyle("-fx-font-size:40;");
root.getChildren().add(lblStyle);
stage.setTitle("Hello World!");
stage.setScene(scene);
stage.show();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8601 次 |
| 最近记录: |