2013-03-07 3 views
1

Я использую Java-версию SteelSeries. В моем коде DisplaySingle.setLcdValueFont() не действует: независимо от того, какой шрифт я устанавливал, шрифт по умолчанию всегда используется. Кто-нибудь смог заставить setLcdValueFont работать?DisplaySingle.setLcdValueFont не влияет на SteelSeries

Детали: я использую 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. Однако вы должны иметь возможность менять шрифт единиц.

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