Javafx 2 在JavaFX中全局设置字体

Javafx 2 在JavaFX中全局设置字体,javafx-2,javafx,javafx-8,Javafx 2,Javafx,Javafx 8,如何在JavaFX应用程序中全局设置字体类型 有什么解决办法我可以用吗?在JavaFX8中,默认字体已更改,我希望使用JavaFX2.2中使用的相同字体。您可以使用CSS对应用程序进行蒙皮,如前所述。 使用以下语法,您可以为应用程序设置常规主题: .root{ -fx-font-size: 16pt; -fx-font-family: "Courier New"; -fx-base: rgb(132, 145, 47); -fx-background: rgb(2

如何在JavaFX应用程序中全局设置字体类型


有什么解决办法我可以用吗?在JavaFX8中,默认字体已更改,我希望使用JavaFX2.2中使用的相同字体。

您可以使用CSS对应用程序进行蒙皮,如前所述。 使用以下语法,您可以为应用程序设置常规主题:

.root{
    -fx-font-size: 16pt;
    -fx-font-family: "Courier New";
    -fx-base: rgb(132, 145, 47);
    -fx-background: rgb(225, 228, 203);
}
您可以按如下方式包括css:

scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());

更改场景的默认字体

这是尼里基的回答中概括的解决方案

通过将以下CSS样式表应用于场景,可以更改任何给定场景中用于大多数内容的默认字体:

.root {
  -fx-font: 28px Vivaldi;
}
根据所需设置替换
-fx font
值所需的任何设置


更改应用程序的默认字体

如果要更改JavaFX应用程序中用于大多数内容的默认字体,可以使用替代默认样式表。使用此方法,可以将JavaFX8应用程序的默认样式设置为JavaFX2.2的默认样式表,而不是JavaFX8的默认样式表。如果您想混合使用这两种默认样式或自定义默认样式表,例如,则需要自己执行自定义

切换字体渲染技术


此外,在某些平台上,JavaFX2.2使用了与JavaFX8不同的字体呈现机制,这可以解释两者在字体呈现方面的细微差异。在JavaFX 8中,有一个未记录且不受支持的命令行开关可用于在字体呈现机制之间切换,但我不知道该开关是什么,即使我这样做了,我也不建议使用该开关部署应用程序,因为它不受支持。

只是一个FX示例

package bj

import tornadofx.*

class MyView : View() {
    override val root = vbox {
        button("天地玄黄")
        button("宇宙洪荒")
    }
}

class MyStylesheet : Stylesheet() {
    init {
        root {
            fontFamily = "Noto Sans CJK SC Regular"
        }
    }
}

class MyApp : App(MyView::class, MyStylesheet::class)

fun main(args: Array<String>) {
    launch<MyApp>(*args)
}
包bj
导入tornadofx*
类MyView:View(){
覆盖val root=vbox{
按钮(“天地玄黄")
按钮(“宇宙洪荒")
}
}
类MyStylesheet:Stylesheet(){
初始化{
根{
fontFamily=“Noto Sans CJK SC常规”
}
}
}
类MyApp:App(MyView::class,MyStylesheet::class)
趣味主线(args:Array){
启动(*args)
}

FWIW,如果您想以编程方式更改字体(不涉及外部css文件),可以使用顶部父节点上的
.setStyle()
方法进行“全局”更改

例如,我编写了一个Windows和Mac用户都需要运行的快速GUI(一个基本测试框架)(我正在Linux/Ubuntu上编写)。Mac用户抱怨字体太小。因此我添加了以下内容:

String os = System.getProperty("os.name","generic").toLowerCase(Locale.US);
if (os.indexOf("mac") > 0) {
    root.setStyle("-fx-font-size: 14pt");           
}

在这种情况下,root
场景
实例化中的
父节点。连接到root的所有节点都将共享此字体大小设置,除非该设置被覆盖。

在主窗口中工作,但在子窗口中不工作-windows@golimar您需要将样式表附加到子窗口a的场景很好