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

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

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

Ответ 1

Вы можете скрыть свое приложение с помощью 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());

Ответ 2

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

Это решение вышло в ответ на nyyrikki.

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

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

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

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

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

Технология переключения шрифтов

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