Java Swing JLabel, HTML и пользовательские шрифты

В нашем приложении Java Swing мы загружаем пользовательский шрифт и добавляем его в JLabel:

try {
  this.font = Font.createFont(Font.TRUETYPE_FONT, new File("resources/fonts/ourcoolfont.ttf")).deriveFont(16f);
} catch (Exception e) {
  this.font = new Font("Arial", Font.PLAIN, 16);
}
this.label.setFont(this.font);

Легко и отлично работал на трех разных системах. Пока кто-то другой не попытался его запустить. Шрифт был загружен (как мы используем и в некоторых других элементах Swing), но не использовался в JLabel.

После некоторых поисков я выяснил, что нельзя использовать одновременно HTML и загруженный шрифт. По некоторым причинам это работает на моей системе (я предполагаю, что это связано с версией Java), но не работает на некоторых других. Поскольку мы хотим, чтобы проект работал на устаревших версиях Java, просто попросить его обновить - не вариант.

Один из вариантов - установить шрифт на компьютер, что нам не нравится делать. Лучшим решением, которое я нашел, является следующее: Как я могу создать текстовый компонент Java/Swing, который будет иметь стиль и пользовательский шрифт?

Однако этот вопрос относится к JTextPane. У JLabel, похоже, нет метода getStyledDocument(), который я мог бы использовать для этого.

Есть ли способ позволить нашему шрифту работать с JLabel?

5
задан Community 23 May 2017 в 12:15
поделиться