j2me drawChar ненормальное расстояние между символами? - PullRequest
1 голос
/ 28 февраля 2012

Я пишу код для рисования текста на холсте j2me без использования drawString.
По некоторым причинам я не могу использовать метод drawString.
Поэтому, когда я запускаю свою программу, я имею дело с ненормальным интервалом между символами.
Пожалуйста, помогите мне решить проблему. Это мой код:

public void paint(Graphics g) {
        ...
        String str = ... ;
        int x0 = 10;
        int y0 = getHeight() - 50;
        Font f = g.getFont();
        int charWidth = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            charWidth = f.charWidth(ch);
            x0 += charWidth;
            g.drawChar(ch, x0, y0, 0);            
        }
        ...
}

1 Ответ

2 голосов
/ 28 февраля 2012

вместо этого используйте это:

public void paint(Graphics g) {
        ...
        String str = ... ;
        int x0 = 10;
        int y0 = getHeight() - 50;
        Font f = g.getFont();
        int lastWidth = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            g.drawChar(ch, x0 + lastWidth, y0, 0);
            lastWidth += f.charWidth(ch);
        }
        ...
}     

В вашем методе drawChar вы используете 0 (он равен Graphics.TOP | Graphics.LEFT), поэтому вы увеличиваете «lastWidth» после отрисовки текущего символа илииспользуйте другой якорь (например, Graphics.TOP | Graphics.RIGHT) для drawChar.

...