フォントをきちんと指定しないと,端末毎にデフォルト文字サイズが異なり,変になります
paintの先頭で指定します
public void paint(Graphics g){ //希望のフォントサイズを取得 Font f=Font.getFont(Font.FACE_SYSTEM|Font.STYLE_PLAIN|Font.SIZE_MEDIUM); //フォントを画面に反映 g.setFont(f); g.setColor(Graphics.getColorOfName(Graphics.WHITE)); g.fillRect(0, 0, 240, 240); g.setColor(Graphics.getColorOfName(Graphics.BLACK)); g.drawString(Integer.toString(i), 0, 20); paFlg = false; }
文字を希望した位置にピッタリ表示するにはどうすれば良いのでしょうか?
画像で枠を表示して,その中にピッタリと文字を入れたい場合に仕組みを理解していなければ苦労します
Javaの文字表示は,ベースラインを基準としています
つまり,ベースライン分下にずらせば文字の左上を起点とした指定が行えるようになります
public void paint(Graphics g){ Font f=Font.getFont(Font.FACE_SYSTEM|Font.STYLE_PLAIN|Font.SIZE_MEDIUM); g.setFont(f); //ベースライン取得 int ac=f.getAscent(); g.setColor(Graphics.getColorOfName(Graphics.WHITE)); g.fillRect(0, 0, 240, 240); g.setColor(Graphics.getColorOfName(Graphics.BLACK)); //ベースライン分下にずらす g.drawString(Integer.toString(i), 0, ac + 0); paFlg = false; }
これで,左上隅に文字を表示する事ができます
横10,縦20の位置に表示したければ,以下のように記述すれば良いので直感的に操作できます
g.drawString(Integer.toString(i), 10, ac + 20);
505シリーズ以降から,フォントサイズは固定されています
Font.SIZE_TINY | 12×12 |
Font.SIZE_SMALL | 16×16 |
Font.SIZE_MEDIUM | 24×24 |
Font.SIZE_LARGE | 30×30 |