我正在使用SteelSeries gauge Java库。在我的代码中,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中存在一个错误,但是也许我无法使其正常工作?
最佳答案
这看起来像个错误。在setLcdValueFont()方法中将在init()中设置的字体覆盖为默认的LCD_STANDARD_FONT
字体。这是这行:
lcdValueFont = LCD_STANDARD_FONT.deriveFont(0.625f * getInnerBounds().height);
因此,它始终是
Verdana 24
。不过,您应该可以更改单位字体。