java
1 class AnimeThread extends Thread { 2 3 public void run() { 4 while(mode == 1){ 5 System.out.println("動作中・・・"); 6 for(double d=0;d<(angle-vAngle)/vAngle;d+=vAngle){ 7 Displace(); 8 repaint(); 9 10 } 11 mode=2; 12 repaint(); 13 } 14 try { 15 Thread.sleep(150); 16 } catch(Exception e) { 17 } 18 } 19 } 20
repaintで呼び出されるメソッドはPaintCompnentです。
Displaceは別のメソッドです。
repaintをループの中に入れて、Displaceとrepaintを11回繰り返したいのですが、
実行されるのはDisplaceだけで(それも11回のはずなのに尋常じゃない回数を実行する)repaintは最後の1回だけ。
ループを抜けた後のrepaintは実行されます。
modeはPaintCompnentを呼び出した時にどの処理をするかの判断をするものです。
一応PaintCompnentの中身も貼っておきます。
java
1 public void paintComponent(Graphics g) { 2 super.paintComponent(g); 3 Graphics2D g2 = (Graphics2D)g; 4 System.out.println("paintComponent"); 5 6 7 if(mode==1){ 8 //再描画 9 System.out.println("移動開始(再描画)"); 10 for(int p=0;p<size;p++){ 11 //button自身が持っているx座標とy座標を送って描画する 12 ImageIcon icon = RoundButton.drow(button.get(p).getCoordX(),button.get(p).getCoordY(),buttonSize[p], button.get(p),iconList.get(p)); 13 button.get(p).setIcon(icon); 14 } 15 System.out.println("移動完了(再描画)"); 16 17 18 19 }else if(mode==2){ 20 //最終的に決められた位置に合わせてずれないようにする 21 move(); 22 System.out.println("最終点に合わせる"); 23 for(int l=0;l<size;l++){ 24 ImageIcon icon = RoundButton.drow(xPoint[l],yPoint[l],buttonSize[l], button.get(l),iconList.get(l)); 25 button.get(l).setIcon(icon); 26 } 27 mode=0; 28 } 29 30 setOpaque(false); 31 } 32 33
どうか助言お願いします!
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/08 04:25