2015-12-09 3 views
1

Некоторые сотрудники и я пишем справочную документацию в HTML, которая будет использоваться с панелью JavaFX WebView. Мы хотим, чтобы он соответствовал остальной части пользовательского интерфейса. Обычно я указывал шрифт по умолчанию в файле CSS, но остальная часть приложения JavaFX, по-видимому, использует шрифт пользовательского интерфейса по умолчанию.Как указать шрифт по умолчанию в javafx WebView будет таким же, как шрифт UI по умолчанию

Есть ли способ установить это программно? Я могу выбрать пользовательский интерфейс Segoe по имени в .css, но мы хотим, чтобы он выглядел корректно, независимо от платформы.

ответ

0

Если я полностью понял, что вы хотите использовать шрифт по умолчанию для всей части javafx вашего приложения. Я предлагаю вам сделать это:

  1. Скачать шрифт свои собственные, как .ttf и добавить его к ресурсам в приложении.
  2. Загрузить шрифт с статической функции Font.loadFont: Font.loadFont(this.class.getClassLoader().getResource("fonts/YOURFONT.ttf").toExternalForm(), 10);
  3. Теперь установите шрифт в корневом каталоге приложения. Я предлагаю сделать это с помощью CSS, как предполагается, here -> another stackoverflow answer: В вашем application.css надстройку: .root{ -fx-font-family: "YOURFONT"; } После этого вам необходимо загрузить файл application.css и установить его на сцене: scene.getStylesheets().add(this.class.getClassLoader().getResource("css/application.css").toExternalForm());

I верьте, что лучше, если вы не зависите от системы, на которой работает ваше приложение, поэтому упакуйте шрифт в приложение.

Для html вы можете сделать то же самое с обычным css, указав @ font-face.

+0

Хм ... это кажется ненужной работой; мы хотим использовать системные шрифты, а не предоставлять файлы .ttf. –

1

Использование

Font.getDefault().getName() 

получить имя настройки по умолчанию шрифта и просто добавить его в HTML файл/строка, которая собирается быть добавлен в WebView.

пример:

cssString = cssString + "html { font-family: '" + Font.getDefault().getName() + "';}"; 

Ofcause вы должны сделать его чище, чем это.

Смежные вопросы