(数字が文字盤の後ろになってる状態です)
どうしたら治りますか?
public void number(Graphics g){
…省略…
g.setColor(Color.black);
for(int i = 1;i <= 12; i++){
String num=Integer.toString(i);
int cheight=fm.getHeight()/2;
int cwidth=fm.stringWidth(num);
int x=70+(int)(50*Math.cos(theta));
int y=70-(int)(50*Math.sin(theta));
g.drawString(num,x-cwidth/2,y+cheight/2);
theta -= anglespace;
}
}
public void update(Graphics g){
g.setColor(Color.gray);
g.fillOval(20,20,100,100);
g.setColor(Color.black);
double hra = 2 * Math.PI * (hour + min/60.0) / 12.0;
int hx = (int)(70+30 * Math.sin(hra));
int hy = (int)(70-30 * Math.cos(hra));
g.drawLine(70,70,hx,hy);
g.setColor(Color.blue);
double mra = 2 * Math.PI * min / 60.0;
int mx = (int)(70+30 * Math.sin(mra));
int my = (int)(70-30 * Math.cos(mra));
g.drawLine(70,70,mx,my);
}
public void paint(Graphics g){
number(g);
update(g);
}
}
以上のどこかがおかしいのだと思いますが…
ご指摘よろしくお願いします。
提示されているJavaプログラムのpaintメソッドを見ると、描画の順は、
になっているようです。
1→2の順に描画されているため、数字が時計盤の円に隠れているのではないかと思います。
numberメソッドをpaintメソッド上で呼び出すのではなく、updateメソッドにおける2の処理(g.fillOval)の後で呼び出すようにすることはできないでしょうか?
※numberメソッドの省略部分の内容が不明なので、実際に呼び出せるかは分かりませんが。
言われたとおりupdateの中で、時計盤塗りつぶしの後で
数字を描画したら、うまくいきました!
ありがとうございました^^