DisplaySingle.setLcdValueFont не действует в SteelSeries
Я использую Java-библиотеку SteelSeries. В моем коде DisplaySingle.setLcdValueFont() не имеет никакого эффекта: независимо от того, какой шрифт я установил, всегда используется шрифт по умолчанию. Кому-нибудь удалось заставить работать setLcdValueFont?
Детали: я использую DisplaySingle следующим образом:
public class ScoreDisplay {
private DisplaySingle display = new DisplaySingle();
public ScoreDisplay() {
display.setLcdUnitString("");
Font font = new Font("serif", Font.PLAIN,30);
if (font == null) {
System.out.println("Font is null");
}
System.out.println(font.toString());
display.setLcdValueFont(font);
display.setLcdColor(LcdColor.AMBER_LCD);
display.setLcdValue(99);
display.setLcdDecimals(0);
display.setLcdValueFont(font);
}
public DisplaySingle getDisplay() {
return display;
}
}
Далее в коде дисплей добавляется в JPanel:
ScoreDisplay scoreDisplay = new ScoreDisplay();
JPanel panel = new JPanel(new GridLayout(4, 1));
[...]
panel.add(scoreDisplay.getDisplay());
Я взглянул на источник DisplaySingle и заметил, что его метод init() всегда сбрасывает lcdValueFont на производную от LCD_DIGITAL_FONT или LCD_STANDARD_FONT, перезаписывая значение, установленное вызовом.setLcdValueFont. Метод init() вызывается во многих местах, включая различные методы set*.
Я думаю, что есть ошибка в DisplaySingle, но, возможно, я просто не могу заставить ее работать?
1 ответ
Это похоже на ошибку. Шрифт, который установлен в setLcdValueFont(), переопределяется в методе init() по умолчанию LCD_STANDARD_FONT
шрифт. Вот эта строка:
lcdValueFont = LCD_STANDARD_FONT.deriveFont(0.625f * getInnerBounds().height);
Так всегда Verdana 24
, Вы должны быть в состоянии изменить шрифт единиц, хотя.