it-swarm.com.ru

Установить шрифт глобально в JavaFX

Как я могу установить тип шрифта глобально в приложении JavaFX? 

Есть ли какое-нибудь решение, которое я могу использовать? В JavaFX 8 шрифт по умолчанию изменился, и я хотел бы использовать тот же шрифт, который используется в JavaFX 2.2.

12
Peter Penzov

Вы можете создать оболочку для своего приложения с помощью CSS, как описано на веб-сайте Oracle . Используя следующий синтаксис, вы можете установить общую тему для своего приложения:

.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());
23
nyyrikki

Изменение шрифта по умолчанию для сцены

Это решение, приведенное в ответе nyyrikki.

Вы можете изменить шрифт по умолчанию, используемый для большинства вещей в любой сцене, применив к сцене следующую таблицу стилей CSS:

.root {
  -fx-font: 28px Vivaldi;
}

Замените любые параметры, которые вам требуются, на значение -fx-font в соответствии с определение шрифта в справочном руководстве по CSS для JavaFX .

Изменение шрифта по умолчанию для приложения

Если вы хотите изменить шрифт по умолчанию, используемый для большинства вещей в приложении JavaFX, вы можете переопределить таблицу стилей по умолчанию, используя Application.setUserAgentStylesheet . Используя этот метод, вы можете установить стиль по умолчанию для приложения JavaFX 8 для таблицы стилей caspian , которая была по умолчанию для JavaFX 2.2, а не для таблицы стилей modena , которая используется по умолчанию для JavaFX 8. Если вы Если вам нужен гибрид двух стилей по умолчанию или несколько пользовательских таблиц стилей по умолчанию, таких как AquaFX , то вам придется выполнить настройку самостоятельно.

Переключение технологии рендеринга шрифтов

Кроме того, на некоторых платформах JavaFX 2.2 использует механизм рендеринга шрифтов, отличный от JavaFX 8, который может объяснить тонкие различия в рендеринге шрифтов между ними. Существует недокументированный и неподдерживаемый переключатель командной строки, который можно использовать для переключения между механизмами рендеринга шрифтов в JavaFX 8, но я не знаю, что это за переключатель, и даже если бы я это сделал, я бы не рекомендовал развертывать Приложение использует переключатель, так как он не поддерживается.

4
jewelsea

Просто пример TornadoFX

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)
}
1
BaiJiFeiLong