1

SteelSeries ゲージ 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 にバグがあると思いますが、うまく動かないのでしょうか?

4

1 に答える 1

1

これはバグのようです。setLcdValueFont()で設定されたフォントは、 init()メソッドでデフォルトのフォントにオーバーライドされますLCD_STANDARD_FONT。その行は次のとおりです。

lcdValueFont = LCD_STANDARD_FONT.deriveFont(0.625f * getInnerBounds().height);

だからそれはいつもVerdana 24です。ただし、単位のフォントを変更できるはずです。

于 2013-03-07T01:48:30.693 に答える