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, Вы должны быть в состоянии изменить шрифт единиц, хотя.

Другие вопросы по тегам